解题思路: 思路并不难,就是把所有二进制正确的可能性都存起来,然后查找三进制所有正确的可能性有没有存在相同的数,找到输出即可。主要是不太熟悉二进制的转换到十进制。
#include<bits/stdc++.h>
using namespace std;
vector<int> s;
int main()
{
string a,b;
cin>>a>>b;
int la=a.size();int lb=b.size();
reverse(a.begin(),a.end()); reverse(b.begin(),b.end());
for(int i=0;i<la;i++)
{
int ans=0;
for(int j=0;j<la;j++)
{
if(i==j)
{
if(a[j]=='0')
{
ans+=pow(2,j);
}
}
else{
ans+=(a[j]-'0')*pow(2,j);
}
}
s.push_back(ans);
}
for(int i=0;i<lb;i++)
{
int cnt1=0;int cnt2=0;
for(int j=0;j<lb;j++)
{
if(i==j)
{
if(b[j]=='0') {
cnt1+=pow(3,j); cnt2+=2*pow(3,j);
}
else if(b[j]=='1'){
cnt1+=2*pow(3,j);
}
else{
cnt1+=pow(3,j);
}
}else
{
cnt1+=(b[j]-'0')*pow(3,j);cnt2+=(b[j]-'0')*pow(3,j);
}
}
int len=s.size();
for(int i=0;i<len;i++)
{
if(s[i]==cnt1)
{
cout<<cnt1;return 0;
}
if(s[i]==cnt2)
{
cout<<cnt2;return 0;
}
}
}
}