1 条题解
-
0
C++ :
#include<stdio.h> #include<string.h> bool can[10][10]; int rules[10]; int ans[1000000]; int len,n,k; char s[100]; int main() { int i,j; scanf("%s",s); scanf("%d",&k); for ( i=1;i<=k;++i) { int a,b; scanf("%d%d",&a,&b); can[a][b]=true; } for ( i=0;i<10;++i) can[i][i]=true; for (int k=0;k<10;++k) for ( i=0;i<10;++i) for ( j=0;j<10;++j) can[i][j]=can[i][j]||(can[i][k]&&can[k][j]); for ( i=0;i<10;++i) for ( j=0;j<10;++j) if (can[i][j]) ++rules[i]; ans[1]=len=1; for ( i=0;i<strlen(s);++i) { int x=rules[s[i]-'0']; for ( j=1;j<=len;++j) ans[j]*=x; for ( j=1;j<=len;++j) { ans[j+1]+=ans[j]/10; ans[j]%=10; } while (ans[len]) { ans[len+1]+=ans[len]/10; ans[len]%=10; ++len; } } for ( i=len-1;i>0;--i) printf("%d",ans[i]); puts(""); return 0; }
- 1
信息
- ID
- 621
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者