- 产生数
- 2025-03-21 20:14:32 @
/*
其实可以不用高精度
答案尾部有很多的0 把答案尾部的0的个数算出来 余下部分就可以long long
*/
#include<bits/stdc++.h>
using namespace std;
int f[12]={0};
int a[12][12]={0};
string m;
int n,i,j,k,x,y,t;
long long p;
int main(){
cin >> m >> n;
for (int i=1;i<=n;++i) {
cin >> x >> y;
a[x][y]=1;
}
for (int i=0;i<=9;++i) a[i][i]=1;
for (int k=0;k<=9;++k)
for (int i=0;i<=9;++i)
for (int j=0;j<=9;++j)
if (a[i][k] && a[k][j]) a[i][j]=1;
for (int i=0;i<=9;++i)
for (int j=0;j<=9;++j)
f[i]+=a[i][j];
p=1; t=0;
for (int i=0;i<m.length();++i){
p*=f[m[i]-'0'];
while (p%10==0) {
t++;
p/=10;
}
}
cout << p;
for (int i=1;i<=t;++i) cout << 0;
}