请大佬帮助一下,记得休息一下眼睛
#include<bits/stdc++.h>
using namespace std;
string asc1,asc2,terna="";
long long len1,len2;
int deb,diff;
void DCon10()
{
for(int i=len1;i>=0;i--)
deb=(i-'0')*pow(2,len1-i);
return ;
}
void DCon3()
{
int num=deb;//因为deb要保留到输出
while (num)
{
terna=char(num%3+'0')+terna;
num/=3;
}
return ;
}
int main()
{
cin>>asc1>>asc2;
len1=asc1.size()-1;
len2=asc2.size()-1;
for (int i=0;i<=len1;i++)
{
//1.变asc1的数
if (asc1[i]=='1') asc1[i]='0';
else asc1[i]='1';
//2.2转10 用deb储存10进制 int类型
DCon10();
//3.10转3 用tarna储存3进制 string类型
DCon3();
//判断是否只错了一个数 用diff来统计差的数
for (int j=0;j<=len2;j++)
{
if (terna[j]!=asc2[j])
diff++;
}
//是.输出10进制的数
if (diff==1)
{
cout<<deb;
return 0;
}
//否.将asc1的数变回来
else
{
if (asc1[i]=='1') asc1[i]='0';
else asc1[i]='1';
continue;
}
}
}