50求助
查看原帖
50求助
941906
IO_Max楼主2025/7/25 22:25
#include<bits/stdc++.h>
using namespace std;
string s1,s2;
int check1(string l1){
	int sum=0;
	for(int p=0;p<l1.size();p++)
	{
		int u=l1[p]-'0';
			sum=sum+u*pow(2,l1.size()-1-p);
	}
	return sum;
}//二进转十进
int check2(string l2)
{
	int sun=0;
	for(int p1=0;p1<l2.size();p1++)
	{
		int u1=l2[p1]-'0';
			sun=sun+u1*pow(3,l2.size()-1-p1);
	}
	return sun;
}//三进转十进
int main(void){
	cin>>s1>>s2;
	for(int i=0;i<=s1.size()-1;i++){//枚举所有可能的错误
		for(int j=0;j<=s2.size()-1;j++){
			string m=s1,n=s2;
			if(s1[i]=='1')s1[i]='0';
			else s1[i]='1';
			for(int k=1;k<=2;k++){
				if(k%2==1){
					if(s2[j]=='0')s2[j]='1';
					if(s2[j]=='1')s2[j]='2';
					if(s2[j]=='2')s2[j]='0';
				}
				else{
					if(s2[j]=='0')s2[j]='2';
					if(s2[j]=='1')s2[j]='0';
					if(s2[j]=='2')s2[j]='1';
				}
					if(check1(s1)==check2(s2)){
					cout<<check1(s1);
					return 0;
				}
				s2=n;//还原
			}
			s1=m;//还原
		}
	}
	return 0;
} 
2025/7/25 22:25
加载中...