40pts,求助!
查看原帖
40pts,求助!
907430
corner_xiejunqi楼主2024/11/13 21:34

#include<bits/stdc++.h>
using namespace std;
string N;
int k;
int n[40]; 
int x[40],y[40];
void dfs(int len){
	for(int i=1;i<=k;i++){
		for(int j=0;j<len;j++){
			if(N[j]-'0'==x[i]){
				n[j+1]++;
				N[j]=char(y[i]);
				dfs(len);
				N[j]=char(x[i]);
			}
		}
	}
}
int main(){
	//1、声明变量,输入
	cin>>N>>k;
	int len=N.length();
	for(int i=0;i<len;i++){
		n[i+1]=1; 
	} 
	//2、计算过程
	for(int i=1;i<=k;i++){
		cin>>x[i]>>y[i];
	}
	dfs(len);
	int num[10001]={0,1};
	int l=1;
	for(int i=1;i<=len;i++){
		for(int j=1;j<=l;j++){
			num[j]*=n[i];
		}
		for(int j=1;j<=l;j++){
			if(num[j]>=10){
				num[j+1]+=num[j]/10;
				num[j]%=10;
			}
		}
		if(num[l+1]!=0){
			l++;
		}
	}
	//3、输出
	for(int i=l;i>=1;i--){
		cout<<num[i];
	}
	return 0;
}


2024/11/13 21:34
加载中...