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;
}
View Code

 

 
 
 
posted @ 2023-08-03 00:18  JMXZ  阅读(6)  评论(0)    收藏  举报