AcWing 2058. 笨拙的手指(暴力枚举)
Posted MangataTS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AcWing 2058. 笨拙的手指(暴力枚举)相关的知识,希望对你有一定的参考价值。
题目链接
https://www.acwing.com/problem/content/2060/
思路
因为二进制和三进制有一位是错误的,那么我们直接二重循环枚举每一位,看更改后是否满足相等,如果是的话那么这就是答案,否则继续枚举
代码
#include<bits/stdc++.h>
using 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<<j);
for(int i = b.size()-1,j = 1;i >= 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<<ans<<endl;
return 0;
return 0;
以上是关于AcWing 2058. 笨拙的手指(暴力枚举)的主要内容,如果未能解决你的问题,请参考以下文章