40分悬关求助
查看原帖
40分悬关求助
719619
drinktowind楼主2023/9/30 12:33
#include <bits/stdc++.h>
using namespace std;
string s;
bool f[20][20];
int a[20],ans[1010],l=500,sum;
int main()
{
    int n,x,y;
    cin>>s>>n; 
    for(int i=0;i<n;i++)
    {
        cin>>x>>y;
        f[x][y]=1;
    }
    for(int i=1;i<=9;i++)
    {
        for(int j=0;j<=9;j++)
        {
            for(int k=1;k<=9;k++)
            {
                if(f[j][i]&&f[i][k]) 
					f[i][j]=1;
			}
		}
	}
    for(int i=0;i<10;i++)
    {
        f[i][i]=1;
        for(int j=0;j<10;j++)
        {
            if(f[i][j])
            	a[i]++;
		}
    }
    ans[0]=1;
    for(int i=0;s[i];i++)
    {
        sum=0;
        x=a[s[i]-48];
        for(int j=0;j<500;j++)
        {
            ans[j]=(ans[j]*x+sum);
            sum=ans[j]/10;
            ans[j]%=10;
        }
    }
    while(!ans[l])
		l--;
	l++;
	while(l--)
        cout<<ans[l];
    return 0;
}
2023/9/30 12:33
加载中...