蓝蓝算法09-进制转换
题目描述
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
数据范围:
1 <=n <= 2 31-1
输入描述:
输入一个十六进制的数值字符串
输出描述:
输出该数值的十进制字符串。不同组的测试用例用\n隔开。
题目来源
示例1a
输入:
0xAA
输出:
170
思路
可以看到方法一中,对于十六进制中的高位字符,要乘以多个16,这种重复的操作增加了时间复杂度。我们可以从左往右处理字符串,将高位字符乘以16的操作和低位字符乘以16一起完成。步骤如下:
(1)设置一个初始值ten为0。
(2)每遇到一个字符,把ten乘以16在加上该字符对应的十进制数。
(3)将(2)的结果赋值给ten。
不断重复操作(2)(3)直到处理完字符串。示意图如下:
具体实现
#include<iostream>
#include<string>
using namespace std;//将十六进制转换为十进制
void translate(string str)
{int ten = 0;//初始值int tran;//每一位的转化值for (int i = 2; i < str.size(); i++){if ('0' <= str[i] && str[i] <= '9')tran = str[i] - '0';elsetran = str[i] - 'A' + 10;ten = ten * 16 + tran;}cout << ten << endl;
}int main()
{string str;while (cin >> str){translate(str);system("pause");}return 0;
}
时间复杂度
- 时间复杂度:O(n),对于十六进制数中的每一个字符,遍历一次,并且相应地只进行一次乘法操作
- 空间复杂度:O(1)
其他解法
过程如图所示:
#include<iostream>
#include<string>using namespace std;int main()
{string s;int ten,tran;while (cin>>s){ten = 0;//初始值为0for (int i=s.size()-1;i>1;i--){//将十六进制的字符转化为十进制数字if ('0'<=s[i] && s[i]<='9')tran = s[i]-'0';elsetran = s[i]-'A'+10;//将转化后的数字乘以对应次数的16for (int j=0;j<s.size()-i-1;j++)tran = tran*16;ten += tran;}cout<<ten<<endl;}return 0;
}
- 时间复杂度: O(N^2)。N表示16进制数的位数。乘以16的操作,从低位到高位依次是0,1,2,…,N-1次,总共为N(N−1)/2次
- 空间复杂度: O(1)。没有开辟新空间
蓝蓝算法09-进制转换相关推荐
- 【广义找零钱问题】 贪心算法求解进制转换问题
原题如下,怪我没读懂题意就开始写代码,曲解了题意,就写出个这样的奇葩进制来.但是运行结果与我的预期(实际上是对题的的错误理解)相符. 功能(与上图无关) 实现自定义独特进制的输出.类似于找零钱问题,见 ...
- python二进制转十进制算法_python进制转换:十进制转二进制的用法
我们在学习python时候肯定会碰到关于进制转换,其实这是非常简单的,这个就像小学学习数学乘法口诀意义,只要记住转换口诀即可轻松应用,一起来看下具体的操作内容吧~ 一.python进制转换 dec(十 ...
- 蓝桥杯 ADV-117 算法提高 进制转换
问题描述 程序提示用户输入三个字符,每个字符取值范围是0-9,A-F.然后程序会把这三个字符转化为相应的十六进制整数,并分别以十六进制,十进制,八进制输出. 输入格式:输入只有一行,即三个字符. 输出 ...
- [Java] 蓝桥杯ALGO-85 算法训练 进制转换
问题描述 编写一个程序,输入一个二进制的字符串(长度不超过32),然后计算出相应的十进制整数,并把它打印出来. 输入格式:输入为一个字符串,每个字符都是'0'或'1',字符串的长度不超过32. 输出格 ...
- 蓝桥杯 ALGO-85 算法训练 进制转换
问题描述 编写一个程序,输入一个二进制的字符串(长度不超过32),然后计算出相应的十进制整数,并把它打印出来. 输入格式:输入为一个字符串,每个字符都是'0'或'1',字符串的长度不超过32. 输出格 ...
- 进制转换算法(通用,极简)
检索词: 进制转换.通用进制转换.二进制转十进制.二进制转八进制.二进制转十六进制. 十进制转二进制.十六进制转二进制.八进制转二进制.通用算法.字符型输入输出 一.英文先行 英文 中文 缩写 ...
- python【蓝桥杯vip练习题库】ADV-309进制转换
试题 算法提高 进制转换 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 编写函数将十进制整数按8进制输出,然后编写main函数验证该函数.例如输入12,则输出为:12=014,输入 ...
- Algorithm:【Algorithm算法进阶之路】之算法中的数学编程相关习题(时间速度、进制转换、排列组合、条件概率、斐波那契数列)
Algorithm:[Algorithm算法进阶之路]之算法中的数学编程相关习题(时间速度.进制转换.排列组合.条件概率.斐波那契数列) 目录 时间速度 排列组合 进制转换 条件概率 斐波那契数列 时 ...
- python的用算法进制转换详解_学习python第五天进制转换
6.进制之间的转换(重要) 二进制:满二进一 范围:0.1符号:0b例如:0b10...[注意]计算机只能识别二进制数据 八进制:满八进一 范围:0~7符号:0o例如:0o66 十进制:满十进一 范围 ...
- javascript进制转换_《算法笔记》3.5小节——入门模拟-gt;进制转换
@[TOC] # Contest100000579 - <算法笔记>3.5小节--入门模拟->进制转换 ## 例题 ### PATB1022 PTA | 程序设计类实验辅助教学平台 ...
最新文章
- 用Leangoo项目管理软件做技术支持
- 前端那点事儿——Tocify自动生成文档目录
- 一个MySQL存储过程的模板
- 推荐一个妹子,播报汽车新闻
- QTcreator 多线程(生产者消费者)
- C++中函数模板template和函数参数为指针,且有返回值的结合使用
- 图像处理之添加文字水印
- 1.Swift教程翻译系列——关于Swift
- 基于bootstrap_登陆页面
- Python学习-类的继承
- 字幕滚动c语言程序,MFC实现字幕滚动效果
- 微博机器学习平台架构及在微博推荐中的应用
- Calico 的默认连通性 - 每天5分钟玩转 Docker 容器技术(69)
- php分页查询·······类
- php arraymap 匿名函数,结合代码详细为你讲解,php中的array_map,array_walk以及匿名函数...
- Java文件上传之断点续传解决方案
- 移动手机号神州行去香港购买境外流量包方法和注意事项
- Pr 音频效果参考:滤波器与 EQ
- 内核特征码搜索 获取未导出函数
- arm开发板开发环境搭建
热门文章
- cartographer源码解析(二)node_main.cc文件详解
- 查看Linux下的文件
- 华为---ACL配置
- 如何用ChatGPT制作PPT?
- Android 输入法框架 (2)- 输入法显示和隐藏
- win10计算机打印机共享怎么设置方法,Win10系统怎么设置打印机共享?Win10系统打印机共享设置教程...
- 关于echarts自定义合并中国地图分区展示的问题
- 净误差与遗漏为负值的含义_【双语】跳出“资本外逃”之争看净误差与遗漏
- uni-app开发中遇到的问题(持续更新...)
- 《东周列国志》第一回 周宣王闻谣轻杀 杜大夫化厉鸣冤