Acwing 2058. 笨拙的手指

题目

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

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

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

例如,如果她将数字 1414 转换为二进制数,那么正确的结果应为 11101110,但她可能会写下 01100110 或 11111111。

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

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

输入格式

第一行包含 NN 的二进制表示,其中一位是错误的。

第二行包含 NN 的三进制表示,其中一位是错误的。

输出格式

输出正确的 NN 的值。

数据范围

0≤N≤10^9,且存在唯一解。

输入样例:

1010
212

输出样例

14

Mycode

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
int main(){string n2;string n3;set<int> res2;set<int> res3;cin>>n2>>n3;for(int i=0;i<n2.length();i++){string ss=n2;ss[i]= ss[i]=='1'? '0':'1';int sum=0;for(int j=n2.length()-1;j>=0;j--){sum+=(ss[j]-'0')*pow(2,n2.length()-1-j);} res2.insert(sum);}for(int i=0;i<n3.length();i++){string ss1=n3;string ss2=n3;if(n3[i]=='0'){ss1[i]='1';ss2[i]='2';} else if(n3[i]=='1'){ss1[i]='0';ss2[i]='2';}else if(n3[i]=='2'){ss1[i]='0';ss2[i]='1';}int sum1=0;int sum2=0;for(int j=n3.length()-1;j>=0;j--){sum1 +=(ss1[j]-'0')*pow(3,n3.length()-1-j);} for(int j=n3.length()-1;j>=0;j--){sum2 +=(ss2[j]-'0')*pow(3,n3.length()-1-j);} res3.insert(sum1);res3.insert(sum2);}vector<int> ans;set_intersection(res2.begin(),res2.end(),res3.begin(),res3.end(),inserter(ans,ans.begin()));cout<<ans[0];
}

菜狗想到的办法只有暴力枚举。。。

分别对二进制和三进制枚举每一种出错的情况(二进制不是1就是0,三进制0 1 2取其中两种),扔进集合里,再求交集,就可以得到正确答案。

这里学会了如何交集

set_intersection(res2.begin(),res2.end(),res3.begin(),res3.end(),inserter(ans,ans.begin()));

其中inserter声明一个插入迭代器。ans是插入操作的对象,ans.begin()是开始插入的迭代器。

每日一题 笨拙的手指相关推荐

  1. 2022.01.02 Acwing寒假每日一题 笨拙的手指

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

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

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

  3. 2022AcWing寒假算法每日一题之2058. 笨拙的手指

    2022AcWing寒假算法每日一题之2058. 笨拙的手指 题目链接:AcWing2058. 笨拙的手指 思路: 1.数据范围为0-1e9,则输入的时候按照字符串输入 2.将二进制和三进制各位数上的 ...

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

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

  5. 寒假每日一题 1 : 笨拙的手指 java

    1 : 笨拙的手指 枚举 题目 视频讲解 奶牛贝茜正在学习如何在不同进制之间转换数字. 但是她总是犯错误,因为她无法轻易的用两个前蹄握住笔. 每当贝茜将数字转换为一个新的进制并写下结果时,她总是将其中 ...

  6. Acwing寒假每日一题(一)笨拙的手指

    题目链接:笨拙的手指 题解:输入两个字符串a, b,然后分别倒序存入两个vector A,B中,注意要减'0'. 然后,遍历A,每次改变一位,与1异或即可实现,将其转为10进制,再转为3进制,注意此时 ...

  7. AcWing 1月9日每日一题 2058. 笨拙的手指

    AcWing 2058. 笨拙的手指 思路分析: 枚举的思想,因为题目中明确说明只有一位不同,所以可以把所有情况枚举出来,1e9的二进制最多不超过30位,三进制同理,因此分别进行枚举后,求出10进制的 ...

  8. 笨拙的手指——acwing算法题第一天

    笨拙的手指 方法一 方法二 方法一 用暴力枚举法枚举出二进制所有的情况,化为十进制数存放在一个数组中, 然后再去枚举三进制所有的情况,化为十进制一一去和数组中的元素去匹配,如果相等就说明找到了答案,结 ...

  9. acwing——每日一题——总结

    acwing--每日一题--总结 第一周 1.笨拙的手指(考查点:进制转换) 2.干草堆(考查点:差分+前缀和) 3.奶牛选美(bfs模板+floodfill算法) 4.拖拉机(bfs+双端队列=迪杰 ...

最新文章

  1. c++框架有哪些_Java Mybatis框架入门教程_v20200726
  2. 吞吐量达到瓶颈后下降_如何找到 Kafka 集群的吞吐量极限?
  3. Dirichlet分布与多项分布的共轭性
  4. 正则表达式的汉字匹配
  5. jMeter debug postprocessor的用法
  6. C#原型模式之深复制实现
  7. 小程序如何封装自定义组件(Toast)
  8. java中exception_Java中的异常 Exceptions
  9. 分析数万条国庆旅游评论数据后,我发现了“坑爹”景点背后的秘密
  10. xmapp mysql打不开_XAMPP 的MYSQL无法启动
  11. Android系统信息获取 之二:版本信息获取
  12. EF并非我们想象的那么智能
  13. MLOps- 吴恩达Andrew Ng Overview of the ML Lifecycle and Deployment Week1 论文等资料汇总
  14. osgb转3dtiles 原理_自动控制原理实验箱无法通行故障维修
  15. 使用FlyMCU往STM32中烧写程序
  16. NetApp存储术语介绍
  17. librosa.stft的输出
  18. 各种浏览器的cache文件夹
  19. 一台计算机ip地址在哪里设置密码,电脑动态IP地址怎么设置
  20. pgMP认证,还是再看看吧!

热门文章

  1. 强大的GeoPandas,几行代码实现点转线功能
  2. 【使用C++开发MCU】05-CAN实例之NXP S32K1 FlexCAN模块
  3. 缓存穿透该怎么解决? 回懵面试官
  4. 计算机图形学常用算法
  5. 魔兽世界灵魂兽刷新和服务器维护,魔兽世界灵魂兽 刷新地点整理及外观点评...
  6. 阿里巴巴直播防控中的实人认证技术 1
  7. windows 操作系统安全运维所考虑的安全基线内容
  8. JavaSE之面向对象
  9. 阿里JAVA实习生面试总结(2019年春招)
  10. 到底有几个鸿蒙OS? 谈谈我眼里的鸿蒙操作系统