https://www.acwing.com/problem/content/2060/
思路因为二进制和三进制有一位是错误的,那么我们直接二重循环枚举每一位,看更改后是否满足相等,如果是的话那么这就是答案,否则继续枚举
代码#includeusing namespace std; #define ll long long #define endl "n" ll ans; bool fg(string a,string b) { int aa = 0; int bb = 0; for(int i = a.size()-1,j = 0; i >= 0; --i,j++) { aa += (a[i]-'0') * (1< = 0; --i,j*=3){ bb += (b[i]-'0') * (j); } ans = aa; return aa==bb; } bool check(int la,int lb,string a, string b){ a[la]=a[la]=='0'?'1':'0'; int k = b[lb]-'0'; for(int i = 0;i <= 2; ++i) { if(i == k) continue; b[lb] = i + '0'; if(fg(a,b)) return true; } return false; } int main() { string a,b; cin>>a>>b; int n = a.size(); int m = b.size(); for(int i = 0;i < n; ++i) { for(int j = 0;j < m; ++j) { if(check(i,j,a,b)){ cout<



