60分后两点错,求助!
查看原帖
60分后两点错,求助!
921176
leiwenjin1234楼主2024/9/26 23:05
#include<bits/stdc++.h>
using namespace std;
bool g[10][10];
int k,d[10];
char a[101];
int  ans[101];
int av(int c[],int b,int l){
	int x=0,f=0;
	for(int i=1;i<=l;i++){
		x=c[i]*b;
		x+=f;
		c[i]=x%10;
		f=x/10;
	}
	if(f){
		l++;
		c[l]=f;
	}
	return l;
}
int main(){
	cin>>a>>k;
	for(int i=1;i<=k;i++){
		int x,y;
		cin>>x>>y;
		g[x][y]=1;  
	}  
	for(int i=0;i<=9;i++)
		for(int j=0;j<=9;j++)
			for(int k=0;k<=9;k++){
				if(g[i][j]&&g[j][k])g[i][k]=1;
			}
	for(int i=0;i<=9;i++){
		d[i]=1;
		for(int j=0;j<=9;j++){
			if(g[i][j]&&i!=j)d[i]++;
		}
	}
	int n=strlen(a);
	int ll=1;
	ans[1]=1;
	for(int i=0;i<n;i++){
		int x=a[i]-'0';
		if(d[x]>1)
		ll=av(ans,d[x],ll);
	}
	for(int i=ll;i>=1;i--){
		cout<<ans[i];
	}
	return 0;
}
2024/9/26 23:05
加载中...