栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

AcWing 2058. 笨拙的手指(暴力枚举)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

AcWing 2058. 笨拙的手指(暴力枚举)

题目链接

https://www.acwing.com/problem/content/2060/

思路

因为二进制和三进制有一位是错误的,那么我们直接二重循环枚举每一位,看更改后是否满足相等,如果是的话那么这就是答案,否则继续枚举

代码
#include
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<= 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<
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/717544.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号