60tps 求调
查看原帖
60tps 求调
934455
20221113jmt楼主2023/10/16 15:32

rt, b表示这个数能变成多少个数

#include<cstdio>
#include<cstring>
using namespace std;

int n, k, a[12], f[10][10], b[12];
char str[40];

int main(){
	memset(a,0,sizeof(a));
	scanf("%s",str+1);
//	for(int i=1;i<=strlen(str+1);i++){
//		a[str[i]-'0']++;
//	}
	scanf("%d",&k);
	while(k--){
		int x, y;
		scanf("%d%d",&x,&y);
		f[x][y] = 1;
	}
	for(int i=0;i<=9;i++) f[i][i] = 1;
	for(int i=0;i<=9;i++)
		for(int j=0;j<=9;j++)
			for(int k=0;k<=9;k++)
				if(f[i][k]&&f[k][j]) f[i][j] = 1;
//	for(int i=0;i<=9;i++){
//		for(int j=0;j<=9;j++)
//			printf("%d ",f[i][j]);
//		printf("\n");
//	}
//	return 0;
	for(int i=0;i<=9;i++)
		for(int j=0;j<=9;j++)
			if(f[i][j]) b[i]++;
//	for(int i=0;i<=9;i++) printf("%d ", b[i]);
	long long ans = 1;
	for(int i=1;i<=strlen(str+1);i++)
		ans *= b[str[i]-'0'];
	printf("%lld\n",ans);
	return 0;
}
2023/10/16 15:32
加载中...