奶牛贝茜正在学习如何在不同进制之间转换数字。

但是她总是犯错误,因为她无法轻易的用两个前蹄握住笔。

每当贝茜将数字转换为一个新的进制并写下结果时,她总是将其中的某一位数字写错。

例如,如果她将数字 14 转换为二进制数,那么正确的结果应为 1110,但她可能会写下 0110 或 1111。

贝茜不会额外添加或删除数字,但是可能会由于写错数字的原因,写下包含前导 0 的数字。

给定贝茜将数字 N 转换为二进制数字以及三进制数字的结果,请确定 N 的正确初始值(十进制表示)。

输入格式
第一行包含 N 的二进制表示,其中一位是错误的。
第二行包含 N 的三进制表示,其中一位是错误的。

输出格式
输出正确的 N 的值。

数据范围
0≤N≤1090 ≤ N ≤ 10^90≤N≤109,且存在唯一解。

输入样例:

1010
212

输出样例:

14

样例解释
14 在二进制下的正确表示为 1110,在三进制下的正确表示为 112。


思路

解法一

  1. 将二进制的每一位分别取反,得到十进制
  2. 然后将十进制转换为 333 进制
  3. 如果此时的三进制的位数等于题中给出的,并且只有一位与题中给出的不同,则就是这个 101010 进制

代码

#include<iostream>
#include<vector>
#include<string>
#include<algorithm>using namespace std;// 10进制转3进制字符串
string toThreeBase(int x){if(!x) return "0";  // x == 0string s;while(x > 0){s.push_back((x % 3 + '0'));x /= 3;}reverse(s.begin(), s.end());return s;
}
// 判断a 和 b是否只有一位不同
bool cmp(string &a, string &b){int count = 0;  // 记录有几位不同for(int i = 0; i < a.size(); i++){if(a[i] != b[i]) count++;if(count > 1) return false;}return true;
}int main(){string a, b;cin >> a >> b;  // 1010int x = 0;for(int i = 0; i < a.size(); i++){x += ((a[i]-'0') << (a.size()-i-1));}// cout << toThreeBase(11);int revnum;// 对每一位取反for(int i = 0; i < a.size(); i++){revnum = x ^ (1 << i);string c = toThreeBase(revnum);if(b.size() != c.size()) continue;// 进行比较if(cmp(b, c)){cout << revnum;break;}}return 0;
}

解法二

  1. 对二进制每位进行取反,把对应的十进制数存到集合中
  2. 对三进制的每位取反,得到对应的十进制,判断这个十进制是否在集合中已经出现,如果出现的话,说明原数就是这个十进制数!

代码

#include<iostream>
#include<unordered_set>using namespace std;// 将 b 进制的数转换为10进制
int get(string s, int b){int res = 0;// 秦九韶算法for(auto c:s){res = res * b + (c - '0');}return res;
}int main(){string a, b;cin >> a >> b;unordered_set<int> S;for(auto& c: a){c ^= 1;  // '0' ^ 1 = 48 ^ 1 = 49 = '1'int x = get(a, 2);  // 获取十进制S.insert(x);c ^= 1;  // 恢复}for(auto &c: b){char t = c;for(int i = 0; i < 3; i++){if(i + '0' != t){c = i + '0';int x = get(b, 3);if(S.count(x)){cout << x << endl;return 0;}}}c = t;  // 恢复}return 0;
}

笨拙的手指(寒假每日一题 1)相关推荐

  1. AcWing寒假每日一题2058. 笨拙的手指

    AcWing寒假每日一题2058. 笨拙的手指 题目描述 奶牛贝茜正在学习如何在不同进制之间转换数字. 但是她总是犯错误,因为她无法轻易的用两个前蹄握住笔. 每当贝茜将数字转换为一个新的进制并写下结果 ...

  2. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.11日(2017省赛A第9题)

    2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家看博客目录:https://b ...

  3. 【寒假每日一题】剪绳子(个人练习)详细题解+推导证明(第六天)

    文章目录 前言 题目 详细题解 写法1 O(nlogn)O(nlogn)O(nlogn) 推导证明 举一反三 总结 前言 今天终于出核酸检测的结果,还好大家都没事,不然怕是要封城了!!! 今天还是寒假 ...

  4. 【寒假每日一题】分巧克力(个人练习)详细题解+推导证明(第八天)附带转载程序员壁纸

    文章目录 前言 题目 详细题解 写法1 O(nlogn)O(nlogn)O(nlogn) 推导证明 举一反三 总结 前言 话说今天开始准备搞一个秋招的GitHub,算是复习一遍了. 今天还是寒假每日一 ...

  5. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.20日(2018省赛A组第8题)

    2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: htt ...

  6. 【寒假每日一题】数字三角形(个人练习)详细题解+推导证明(第二天)

    文章目录 前言 题目 详细题解 写法1 O ( n 2 ) O(n^2) O(n2) 推导证明 写法2 O ( n 2 ) O(n^2) O(n2) 推导证明 举一反三 总结 前言 昨天真是人生中奇葩 ...

  7. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.19日(2018省赛A组第7题)

    2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: htt ...

  8. 倪文迪陪你学蓝桥杯2021寒假每日一题:2.1日(2019省赛A组第10题)

    2021年寒假每日一题,2017~2019年的省赛真题.本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供.每日一题,关注蓝桥杯专栏: https://blog.csdn.net/w ...

  9. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.15日(2018省赛A组第3题)

    2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: htt ...

  10. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.26日(2019省赛A组第4题)

    2021年寒假每日一题,2017~2019年的省赛真题.本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供.每日一题,关注蓝桥杯专栏: https://blog.csdn.net/w ...

最新文章

  1. Discuz代码分析——index.php
  2. python定义字符串数组_从字符串数组(或元组)在Python中创建动态sql“ in list”子句的“最佳”方法是什么?...
  3. 聚类Introducion
  4. 计算机设计策略,专家经验谈:Excel工作表的设计策略
  5. 函数式编程工具:filter和reduce
  6. java 变成题_Java 习题8 参考答案及解析
  7. C++vector容器-互换容器
  8. SQLite、MySQL和PostgreSQL 三种关系数据库比较
  9. js页面倒计时7天 java_javascript实现倒计时效果
  10. python将学号与成绩匹配_用Python运维网络(1):基础知识
  11. 分享一套基于SpringBoot和Vue的企业级中后台开源项目,代码很规范!
  12. 许多自己正在总结的东东
  13. CentOS7(Linux)详细安装教程
  14. 中间件 | 负载均衡策略
  15. 线性回归实战:股价预测(未完)
  16. html markdown插件,MarkDown编辑必备插件
  17. php提取字符串连接,如何从PHP中的字符串中提取URL?
  18. 计算机安装win10配置,win11发布了,那么安装win11配置要求是什么?win11配置要求详解...
  19. 中小型软件开发项目管理
  20. velocity笔记(一)什么是velocity,我们什么时候会使用到这个,基本语法,利用模板生成实体类的各层代码

热门文章

  1. 280049_CAN 模块
  2. 量子计算的基本原理论述
  3. Python编程从入门到实践 第一部分基础知识 代码合集
  4. 中国最美丽地方排行榜及游览最佳时间
  5. 《数据库系统原理》教学上机实验报告
  6. 好用的企业微信scrm系统有哪些?
  7. 中科院计算机信息暑期学校,中国科学院大学首期“电子信息技术”暑期学校正式开幕...
  8. 自然语言处理学习笔记-lecture08-语义分析
  9. MyBatis遇到:There is no getter for property named ‘Xxx‘ in ‘class xxx.xxx.Xxx‘问题
  10. Ubuntu-离线安装基本依赖(gcc、make、dkms等)