WA 10pts求调
查看原帖
WA 10pts求调
681558
Weizhuo_Zhao楼主2024/9/1 21:40
# include <bits/stdc++.h>
using namespace std;
int wrong_BIN,wrong_3JZ;
int DEC_becoming_BIN(int n){
	if(n<=1)
		return 1;
	return DEC_becoming_BIN(n/2)*10+(n%2);
}
int _3JZ_becoming_DEC(int n){
	int ans=0,num,i=-1;
	num=n;
	while(num){
		i++;
		ans+=(num%10)*pow(3,i);
		num/=10;
	}
	return ans;
}
string r_str(string s){
	string str="";
	int len=s.size();
	for(int i=len-1;i>=0;i--)
		str+=s[i];
	return str;
}
int str_becoming_int(string s){//自动去前导0 
	int ans=0,len=s.size();
	for(int i=0;i<len;i++){
		ans*=10;
		ans+=s[i]-'0';
	}
	return ans;
}
int BIN_becoming_DEC(int n){
	int ans=0,num=n,i=-1;
	while(num){
		i++;
		ans+=(num%10)*pow(2,i);
		num/=10;
	}
	return ans;
}
int DEC_becoming_3JZ(int n){
	if(n<=2)
		return n%3;
	return DEC_becoming_3JZ(n/3)*10+(n%3);
}
string int_becoming_str(int n){
	string ans="";
	int num=n;
	while(num){
		ans+=char(num%10+'0');
		num/=10;
	}
	return r_str(ans);
}
int main(){
	cin>>wrong_BIN>>wrong_3JZ;
	string str_wrong_BIN="",str_wrong_3JZ="";
	while(wrong_BIN){
		str_wrong_BIN+=char(wrong_BIN%10+'0');
		wrong_BIN/=10;
	}
	while(wrong_3JZ){
		str_wrong_3JZ+=char(wrong_3JZ%10+'0');
		wrong_3JZ/=10;
	}
	int len_BIN=str_wrong_BIN.size(),len_3JZ=str_wrong_3JZ.size();
	str_wrong_BIN=r_str(str_wrong_BIN);
	str_wrong_3JZ=r_str(str_wrong_3JZ);
	int len=max(len_BIN,len_3JZ);
	string right_BIN;
	for(int i=0;i<len_BIN;i++){
		right_BIN=str_wrong_BIN;
		right_BIN[i]=char((int(str_wrong_BIN[i]-'0')+1)%2+'0');//(0+1)mod 2=1(0->1),(1+1)mod 2=0(1->0)
		string right_3JZ=int_becoming_str(DEC_becoming_3JZ(BIN_becoming_DEC(str_becoming_int(right_BIN))));
		string zero="";
		int len_right_3JZ=right_3JZ.size();
		for(int j=1;j<=abs(len_right_3JZ-len_3JZ);j++)
			zero+="0";
		if(len_right_3JZ<len_3JZ)
			right_3JZ=zero+right_3JZ;
		if(len_3JZ<len_right_3JZ)
			str_wrong_3JZ=zero+str_wrong_3JZ;
		int len=max(len_right_3JZ,len_3JZ),wrong_sum=0;
		for(int j=0;j<len;j++)
			if(str_wrong_3JZ[j]!=right_3JZ[j])
				wrong_sum++;
		if(wrong_sum==1){
			cout<<_3JZ_becoming_DEC(str_becoming_int(right_3JZ));
			return 0;
		}
//		cout<<right_BIN<<' '<<str_wrong_3JZ<<' '<<right_3JZ<<' '<<wrong_sum<<'\n';
	}
	return 0;
}

2024/9/1 21:40
加载中...