#1WA#4AC其余TLE,求调,感谢
查看原帖
#1WA#4AC其余TLE,求调,感谢
1025479
LIXE_115楼主2023/8/8 13:24
#include<bits/stdc++.h>
using namespace std;
string s;
int k;
long long ans[31],ma=1;
long long sum[10000];
map<char,int>m;
map<int,long long>Map;
void multiply(){
	sum[0]=1;
	for(int i=0;i<s.size();i++){
		for(int j=0;j<ma;j++){
			sum[j]*=ans[i];
		}
		for(int j=0;j<ma;j++){
			if(sum[j]>=10){
				sum[j+1]+=sum[j]/10;
				sum[j]%=10;	
				if(j==ma-1){
					ma++;
				}	
			}

		}
	}
	return;
}
int main(){
	cin>>s>>k;
	for(int i=0;i<s.size();i++){
		ans[i]=1;
		Map[s[i]-'0']=-1;
	}
	for(int i=0;i<10;i++){
		m[i+'0']=-1;
	}
	char qq;
	int ww;
	for(int i=0;i<k;i++){
		cin>>qq>>ww;
		m[qq]=ww;
	}
	for(int i=0;i<s.size();i++){
		if(Map[s[i]-'0']!=-1){
			ans[i]=Map[s[i]-'0'];
			continue;
		}
		while(m[s[i]]!=-1){

			s[i]=m[s[i]]+'0';
			ans[i]++;
			if(m[s[i]]==-1){
				break;
			}
			Map[s[i]-'0']=ans[i];
		}
	}
//	for(int i=0;i<s.size();i++){
//		cout<<ans[i];
//	}
//	cout<<endl;
	multiply();
	for(int i=ma-1;i>=0;i--){
		cout<<sum[i];
	}
	
	return 0;
}
/*
123456123456123456123456123456 3
1 2
2 4
4 6

4 
*/

rt

2023/8/8 13:24
加载中...