luogu_1037 产生数
Posted Code_Together
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了luogu_1037 产生数相关的知识,希望对你有一定的参考价值。
#include <cstdio> #include <iostream> #include <cstring> using namespace std; char a[32]; int k,in[15],ans[1010]; bool d[15][15],vis[15]; void mul(int x){ for(int i=ans[0];i;i--){ ans[i]*=x; ans[i+1]+=ans[i]/10; ans[i]%=10; } for(int i=1;i<=ans[0];i++)ans[i+1]+=ans[i]/10,ans[i]%=10; while(ans[ans[0]+1])ans[0]++; } int dfs(int now){ int sum=1; vis[now]=1; for(int i=1;i<=9;i++) if(d[now][i] && !vis[i])sum+=dfs(i); return sum; } int main(){ ans[0]=ans[1]=1; scanf("%s%d",&a,&k); while(k--){ int u,v; scanf("%d%d",&u,&v); d[u][v]=1; } for(int i=0;i<=9;i++){ memset(vis,0,sizeof(vis)); in[i]=dfs(i); } for(int i=0;i<strlen(a);i++)mul(in[a[i]-‘0‘]); for(int i=ans[0];i;i--)printf("%d",ans[i]); puts(""); return 0; }
以上是关于luogu_1037 产生数的主要内容,如果未能解决你的问题,请参考以下文章