这里写自定义目录标题

  • 题目描述
    • 实现思想
    • C++ 代码
    • 最后

题目描述

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

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

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

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

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

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

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

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

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

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

输入样例:

1010
212

输出样例:

14

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

实现思想

由于 贝茜 每次只会将一位写错,所以要找到这个数字,就可以考虑 在二进制 和 三进制下,每一位被写错后,其对应的十进制的数字为多少,然后将这两个集合进行比对,由于已经规定答案是唯一的,所以如果存在这两个集合中的公共项,那一定就是答案了。
这里唯一要涉及的一点就是 进制转换 这里是将 任意进制转换为十进制 的秦九韶算法,其实和以前学过的进制转换的手动转换的思想基本一致,不难理解。

C++ 代码

#include <iostream>
#include <string>
#include <algorithm>
#include <unordered_set>using namespace std;
string a,b;//将b 进制的数字转换为 十进制
int get(string s,int b)
{//使用秦九韶算法实现//类似于提取公因式的计算方法,与 计算机基础中 手动计算的方法基本一致int res=0;for(auto c:s){res=res*b+c-'0';}return res;}
int main()
{//读入这两个数字cin>>a>>b;//定义一个哈希表,因为最后要通过比较这两个 集合 来判断这个唯一解unordered_set<int> s;//二进制中寻找每一位不同的结果for(auto& c:a)  //这里的是引用 因为每次都要保证 a 只能被修改一位{//a为二进制,每一位要么是0,要么是1,要实验每一位 写错之后的值c^=1;   //将0变1,将1变0s.insert(get(a,2));     //get 函数的作用就是 将 任意进制的数字转换为十进制,将这个十进制数字放入 哈希表中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<<"\n";return 0;}}}//如果该位没有写错,就需要将该位 恢复原状,然后比较下一位c=t;}return 0;
}

最后

感谢观赏,一起提高,慢慢变强

【算法学习】笨拙的奶牛相关推荐

  1. 算法学习之Trie树

    算法学习之Trie树 by MPS [定义]   trie树又名字母树,是针对字符串的匹配,查找的一种高效手段,是哈希表的一种变种,但青出于蓝胜于蓝.我这个蒟蒻也是表示啃了两天才啃出来这些皮毛,当做学 ...

  2. 无限风光 : 近来地形算法学习小结【转】

    无限风光 : 近来地形算法学习小结 原文链接   目录 -写在前面 -本文话题整体观 -概念(Concepts): 入门须知      -高度图(HeightMap)      -分形(Fractal ...

  3. 基于深度学习的高精度奶牛检测识别系统(PyTorch+Pyside6+YOLOv5模型)

    摘要:基于深度学习的高精度奶牛检测识别系统可用于日常生活中或野外来检测与定位奶牛目标,利用深度学习算法可实现图片.视频.摄像头等方式的奶牛目标检测识别,另外支持结果可视化与图片或视频检测结果的导出.本 ...

  4. 拿下斯坦福和剑桥双offer,00后的算法学习之路

    董文馨,00后,精通英语,西班牙语.斯坦福大学计算机系和剑桥大学双Offer,秋季将进入斯坦福大学学习. 10岁开始在国外上学:12岁学Scratch: 13岁学HTML & CSS: 14岁 ...

  5. 好久没有看到这么有建设性德文章,由衷地赞叹《知其所以然地学习(以算法学习为例)》-By 刘未鹏(pongba)

    知其所以然地学习(以算法学习为例) By 刘未鹏(pongba) C++的罗浮宫(http://blog.csdn.net/pongba) Updated(2008-7-24):更新见正文部分,有标注 ...

  6. 原创 | 初学者友好!最全算法学习资源汇总(附链接)

    在计算机发展飞速的今天,也许有人会问,"今天计算机这么快,算法还重要吗?"其实永远不会有太快的计算机,因为我们总会想出新的应用.虽然在摩尔定律的作用下,计算机的计算能力每年都在飞快 ...

  7. 基本算法学习(一)之希尔排序(JS)

    参考书: 严蔚敏-数据结构 希尔排序(Shell's Sort) 希尔排序又称"缩小增量排序",归属于插入排序一类,简单来说,和我们的插入排序比,它更快. 奇妙的记忆点: 内排序( ...

  8. 大顶堆删除最大值_算法学习笔记(47): 二叉堆

    堆(Heap)是一类数据结构,它们拥有树状结构,且能够保证父节点比子节点大(或小).当根节点保存堆中最大值时,称为大根堆:反之,则称为小根堆. 二叉堆(Binary Heap)是最简单.常用的堆,是一 ...

  9. Surf算法学习心得(一)——算法原理

    Surf算法学习心得(一)--算法原理 写在前面的话: Surf算法是对Sift算法的一种改进,主要是在算法的执行效率上,比Sift算法来讲运行更快!由于我也是初学者,刚刚才开始研究这个算法,然而网上 ...

  10. 算法学习:后缀自动机

    [前置知识] AC自动机(没有什么关联,但是看懂了会对后缀自动机有不同的理解) [解决问题] 各种子串的问题 [算法学习] 学习后缀自动机的过程中,看到了许多相关性质和证明,但是奈何才疏学浅(lan) ...

最新文章

  1. 阿里从来不只属于马云,但马云会永远属于阿里
  2. 对commonMark.js的理解学习
  3. Penang Industrial Zone
  4. Multidex实现简要分析
  5. 寻找连通域算法_FPGA实现的连通域识别算法升级
  6. 微课|中学生可以这样学Python(例4.3):百钱买百鸡
  7. Android-入门学习笔记-图片和外观改善
  8. linux apache gzip压缩,Linux入门教程:配置Apache开启gzip压缩传输,gzip压缩 LoadModul
  9. Tensorflow和Caffe 简介
  10. 个人mysql配置命令
  11. 有符号char和无符号char
  12. 傅里叶变换及其实现(MATLAB)
  13. java用jaxb三步解析xml_三步解决JAXB生成XML包含CDATA问题
  14. vue run dev报错 缺少package.json文件
  15. ApkScan-PKID查壳工具+脱壳(搬运)
  16. 一份不悔的爱情 魔兽中那些我们追过的橙色武器
  17. 这个高仿小米商城项目太惊艳了
  18. 测验1: Python快速入门 (第2周)
  19. 小白web进阶(二)
  20. 学习3ds max—做自行车车轮

热门文章

  1. 爬全景网壁纸(反爬机制Referer)
  2. parrot linux iso下载,Parrot Security OS 4.0发布下载,面向安全的操作系统
  3. linux键盘触摸板失灵,linux 中屏幕合上后触摸板无法使用
  4. 设置Mac的输入法切换快捷键
  5. mining.subscribe与initiate_stratum函数
  6. MATLAB计算信号短时平均过零率
  7. 这些东西适合做什么?
  8. 笔记本加固态小白怎么设置
  9. 面筋:Java实现''the sky is blue''反转输出为blue is sky the
  10. 【博弈论】bzoj1022[SHOI2008]小约翰的游戏John