【算法学习】笨拙的奶牛
这里写自定义目录标题
- 题目描述
- 实现思想
- 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;
}
最后
感谢观赏,一起提高,慢慢变强
【算法学习】笨拙的奶牛相关推荐
- 算法学习之Trie树
算法学习之Trie树 by MPS [定义] trie树又名字母树,是针对字符串的匹配,查找的一种高效手段,是哈希表的一种变种,但青出于蓝胜于蓝.我这个蒟蒻也是表示啃了两天才啃出来这些皮毛,当做学 ...
- 无限风光 : 近来地形算法学习小结【转】
无限风光 : 近来地形算法学习小结 原文链接 目录 -写在前面 -本文话题整体观 -概念(Concepts): 入门须知 -高度图(HeightMap) -分形(Fractal ...
- 基于深度学习的高精度奶牛检测识别系统(PyTorch+Pyside6+YOLOv5模型)
摘要:基于深度学习的高精度奶牛检测识别系统可用于日常生活中或野外来检测与定位奶牛目标,利用深度学习算法可实现图片.视频.摄像头等方式的奶牛目标检测识别,另外支持结果可视化与图片或视频检测结果的导出.本 ...
- 拿下斯坦福和剑桥双offer,00后的算法学习之路
董文馨,00后,精通英语,西班牙语.斯坦福大学计算机系和剑桥大学双Offer,秋季将进入斯坦福大学学习. 10岁开始在国外上学:12岁学Scratch: 13岁学HTML & CSS: 14岁 ...
- 好久没有看到这么有建设性德文章,由衷地赞叹《知其所以然地学习(以算法学习为例)》-By 刘未鹏(pongba)
知其所以然地学习(以算法学习为例) By 刘未鹏(pongba) C++的罗浮宫(http://blog.csdn.net/pongba) Updated(2008-7-24):更新见正文部分,有标注 ...
- 原创 | 初学者友好!最全算法学习资源汇总(附链接)
在计算机发展飞速的今天,也许有人会问,"今天计算机这么快,算法还重要吗?"其实永远不会有太快的计算机,因为我们总会想出新的应用.虽然在摩尔定律的作用下,计算机的计算能力每年都在飞快 ...
- 基本算法学习(一)之希尔排序(JS)
参考书: 严蔚敏-数据结构 希尔排序(Shell's Sort) 希尔排序又称"缩小增量排序",归属于插入排序一类,简单来说,和我们的插入排序比,它更快. 奇妙的记忆点: 内排序( ...
- 大顶堆删除最大值_算法学习笔记(47): 二叉堆
堆(Heap)是一类数据结构,它们拥有树状结构,且能够保证父节点比子节点大(或小).当根节点保存堆中最大值时,称为大根堆:反之,则称为小根堆. 二叉堆(Binary Heap)是最简单.常用的堆,是一 ...
- Surf算法学习心得(一)——算法原理
Surf算法学习心得(一)--算法原理 写在前面的话: Surf算法是对Sift算法的一种改进,主要是在算法的执行效率上,比Sift算法来讲运行更快!由于我也是初学者,刚刚才开始研究这个算法,然而网上 ...
- 算法学习:后缀自动机
[前置知识] AC自动机(没有什么关联,但是看懂了会对后缀自动机有不同的理解) [解决问题] 各种子串的问题 [算法学习] 学习后缀自动机的过程中,看到了许多相关性质和证明,但是奈何才疏学浅(lan) ...
最新文章
- Windows服务启动进程----Cjwdev.WindowsApi.dll
- 没有这项技术,《赛博朋克2077》就算残废?
- dbeaver导出建表语句_细致入微:如何使用数据泵导出表的部分列数据
- OpenFileDialog对话框Filter属性
- 编译py-faster-rcnn的问题汇总及解决方法
- 怎样用c语言统计字符个数字,请问这个用c怎么做:输入一串字符,分别统计其中数字和字母的个数...
- 2019北妈和你:活着就意味必须要做点什么,请好好努力
- 1个模型横扫40+个SOTA!22位华人共同打造佛罗伦萨模型,一统图像视频文本,含9亿图像-文本对...
- 有向无环图描述表达式
- 关于Nginx的一些优化(突破十万并发)。
- lamp源码三层结构
- 一道不起眼的面试题,但被头条面试官玩出了花,48张图,2个动画,带你还原面试现场
- stata15中文乱码_Stata转excel中文乱码解决方法
- ojdbc14:11.2.0.1.0出错
- Jetpack Compose 动画开发实践:微博长按点赞彩虹
- vue项目使用3d高德城市地图用法
- Java基础学习——操作系统批处理(操作系统命令)
- C/C++非专家级编程
- 前端工程化实践总结 | QQ音乐商业化Web团队
- c语言led左右循环程序,c语言编写程序,将led从左往右,再从右往左依次往返点亮...