我的代码应该比较好理解
#include<bits/stdc++.h>
using namespace std;
string a,b,s;
long long ans,temp,x,t,sum;
int main(){
cin>>a>>b;
for(int k=0;k<a.size();k++){
if(a[k]=='1' && k==0) continue;
if(a[k]=='0') a[k]='1';
else a[k]='0';
ans=0;
for(int i=0;i<a.size();i++) ans+=int(a[i]-'0')*pow(2,a.size()-i-1);
temp=ans;
x=0;
while(temp>0){
temp/=3;
x++;
}
temp=ans;
t=x-1;
while(temp>1){
s[t]=temp%3+'0';
temp/=3;
t--;
}
sum=0;
if(x==b.size()){
for(int i=0;i<b.size();i++){
if(b[i]!=s[i]) sum++;
}
}
if(sum==1){
cout<<ans;
return 0;
}
if(a[k]=='0') a[k]='1';
else a[k]='0';
}
return 0;
}