2002 普及组] 产生数

>>> 数字输入 也可以当作string 取决于你 用什么定义
》》》 char -'0' -> int
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<bits/stdc++.h> #define ll long long #define ddd printf("-----------------debug\n"); using namespace std; int k,len,c[11],mul[322]; string n; map< char,vector<char> > mp;// void dfs(char x) { c[x-'0']=1; for(int i=0;i<mp[x].size();i++) { if(c[mp[x][i]-'0'] ==0) dfs(mp[x][i]); } } int main() { //ios::sync_with_stdio(false); cin.tie(0); cin>>n>>k; len=n.length(); for(int i=1;i<=k;i++) { char x,y; cin>>x>>y; mp[x].push_back(y); } mul[1]=1; for(int i=0;i<len;i++) { memset(c,0,sizeof(c)); dfs(n[i]); int sum=0; for(int i=0;i<=9;i++) sum+=c[i]; int x=0; for(int i=1;i<=310;i++) { mul[i]=mul[i]*sum+x; x=mul[i]/10; mul[i]%=10; } } int i=311; while(i>=1&&mul[i]==0) i--; for(;i>=1;i--) cout<<mul[i]; cout<<endl; return 0; }

浙公网安备 33010602011771号