其他分享
首页 > 其他分享> > Acwing2058. 笨拙的手指

Acwing2058. 笨拙的手指

作者:互联网

#include<iostream>
#include<algorithm>
#include<cstring>
#include<unordered_set>

using namespace std;


//unordered_set中函数insert count的使用
//秦九韶算法将b进制的str返回为十进制数字

int get(string a, int b)//将string类型的b进制数字转换为十进制数字
{
    int res = 0;
    for (int i = 0; i < a.size(); i++)//秦九韶算法
    {
        res = res * b + a[i] - '0';
    }
    return res;
}

int main()
{
    string a, b; 
    cin >> a >> b;
    unordered_set<int>s;
    for (int i = 0; i < a.size(); i++)//将a的每一位进行异或 并存入s中其十进制的数值
    {
        a[i] ^= 1;
        s.insert(get(a, 2));
        a[i] ^= 1;

    }
    for (int i = 0; i < b.size(); i++)
    {
        char t = b[i];
        for (int j = 0; j < 3; j++)//对b的每一位进行枚举,枚举其他值,如果s中存在,则证明已找到正确的值
        {
            if (j + '0' != t)
            {
                b[i] = j + '0';
                if (s.count(get(b, 3)))
                {
                    cout << get(b, 3) << endl;
                    return 0;
                }
            }
            b[i] = t;
        }

    }
}

 

标签:笨拙,手指,string,int,res,++,include,Acwing2058,size
来源: https://blog.csdn.net/m0_51305283/article/details/122741814