笨拙的手指(寒假每日一题 1)
奶牛贝茜正在学习如何在不同进制之间转换数字。
但是她总是犯错误,因为她无法轻易的用两个前蹄握住笔。
每当贝茜将数字转换为一个新的进制并写下结果时,她总是将其中的某一位数字写错。
例如,如果她将数字 14 转换为二进制数,那么正确的结果应为 1110,但她可能会写下 0110 或 1111。
贝茜不会额外添加或删除数字,但是可能会由于写错数字的原因,写下包含前导 0 的数字。
给定贝茜将数字 N 转换为二进制数字以及三进制数字的结果,请确定 N 的正确初始值(十进制表示)。
输入格式
第一行包含 N 的二进制表示,其中一位是错误的。
第二行包含 N 的三进制表示,其中一位是错误的。
输出格式
输出正确的 N 的值。
数据范围
0≤N≤1090 ≤ N ≤ 10^90≤N≤109,且存在唯一解。
输入样例:
1010
212
输出样例:
14
样例解释
14 在二进制下的正确表示为 1110,在三进制下的正确表示为 112。
思路
解法一
- 将二进制的每一位分别取反,得到十进制
- 然后将十进制转换为 333 进制
- 如果此时的三进制的位数等于题中给出的,并且只有一位与题中给出的不同,则就是这个 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;
}
解法二
- 对二进制每位进行取反,把对应的十进制数存到集合中
- 对三进制的每位取反,得到对应的十进制,判断这个十进制是否在集合中已经出现,如果出现的话,说明原数就是这个十进制数!
代码
#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)相关推荐
- AcWing寒假每日一题2058. 笨拙的手指
AcWing寒假每日一题2058. 笨拙的手指 题目描述 奶牛贝茜正在学习如何在不同进制之间转换数字. 但是她总是犯错误,因为她无法轻易的用两个前蹄握住笔. 每当贝茜将数字转换为一个新的进制并写下结果 ...
- 倪文迪陪你学蓝桥杯2021寒假每日一题:1.11日(2017省赛A第9题)
2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家看博客目录:https://b ...
- 【寒假每日一题】剪绳子(个人练习)详细题解+推导证明(第六天)
文章目录 前言 题目 详细题解 写法1 O(nlogn)O(nlogn)O(nlogn) 推导证明 举一反三 总结 前言 今天终于出核酸检测的结果,还好大家都没事,不然怕是要封城了!!! 今天还是寒假 ...
- 【寒假每日一题】分巧克力(个人练习)详细题解+推导证明(第八天)附带转载程序员壁纸
文章目录 前言 题目 详细题解 写法1 O(nlogn)O(nlogn)O(nlogn) 推导证明 举一反三 总结 前言 话说今天开始准备搞一个秋招的GitHub,算是复习一遍了. 今天还是寒假每日一 ...
- 倪文迪陪你学蓝桥杯2021寒假每日一题:1.20日(2018省赛A组第8题)
2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: htt ...
- 【寒假每日一题】数字三角形(个人练习)详细题解+推导证明(第二天)
文章目录 前言 题目 详细题解 写法1 O ( n 2 ) O(n^2) O(n2) 推导证明 写法2 O ( n 2 ) O(n^2) O(n2) 推导证明 举一反三 总结 前言 昨天真是人生中奇葩 ...
- 倪文迪陪你学蓝桥杯2021寒假每日一题:1.19日(2018省赛A组第7题)
2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: htt ...
- 倪文迪陪你学蓝桥杯2021寒假每日一题:2.1日(2019省赛A组第10题)
2021年寒假每日一题,2017~2019年的省赛真题.本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供.每日一题,关注蓝桥杯专栏: https://blog.csdn.net/w ...
- 倪文迪陪你学蓝桥杯2021寒假每日一题:1.15日(2018省赛A组第3题)
2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: htt ...
- 倪文迪陪你学蓝桥杯2021寒假每日一题:1.26日(2019省赛A组第4题)
2021年寒假每日一题,2017~2019年的省赛真题.本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供.每日一题,关注蓝桥杯专栏: https://blog.csdn.net/w ...
最新文章
- Discuz代码分析——index.php
- python定义字符串数组_从字符串数组(或元组)在Python中创建动态sql“ in list”子句的“最佳”方法是什么?...
- 聚类Introducion
- 计算机设计策略,专家经验谈:Excel工作表的设计策略
- 函数式编程工具:filter和reduce
- java 变成题_Java 习题8 参考答案及解析
- C++vector容器-互换容器
- SQLite、MySQL和PostgreSQL 三种关系数据库比较
- js页面倒计时7天 java_javascript实现倒计时效果
- python将学号与成绩匹配_用Python运维网络(1):基础知识
- 分享一套基于SpringBoot和Vue的企业级中后台开源项目,代码很规范!
- 许多自己正在总结的东东
- CentOS7(Linux)详细安装教程
- 中间件 | 负载均衡策略
- 线性回归实战:股价预测(未完)
- html markdown插件,MarkDown编辑必备插件
- php提取字符串连接,如何从PHP中的字符串中提取URL?
- 计算机安装win10配置,win11发布了,那么安装win11配置要求是什么?win11配置要求详解...
- 中小型软件开发项目管理
- velocity笔记(一)什么是velocity,我们什么时候会使用到这个,基本语法,利用模板生成实体类的各层代码
热门文章
- 280049_CAN 模块
- 量子计算的基本原理论述
- Python编程从入门到实践 第一部分基础知识 代码合集
- 中国最美丽地方排行榜及游览最佳时间
- 《数据库系统原理》教学上机实验报告
- 好用的企业微信scrm系统有哪些?
- 中科院计算机信息暑期学校,中国科学院大学首期“电子信息技术”暑期学校正式开幕...
- 自然语言处理学习笔记-lecture08-语义分析
- MyBatis遇到:There is no getter for property named ‘Xxx‘ in ‘class xxx.xxx.Xxx‘问题
- Ubuntu-离线安装基本依赖(gcc、make、dkms等)