题目描述

写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。

数据范围:

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-进制转换相关推荐

  1. 【广义找零钱问题】 贪心算法求解进制转换问题

    原题如下,怪我没读懂题意就开始写代码,曲解了题意,就写出个这样的奇葩进制来.但是运行结果与我的预期(实际上是对题的的错误理解)相符. 功能(与上图无关) 实现自定义独特进制的输出.类似于找零钱问题,见 ...

  2. python二进制转十进制算法_python进制转换:十进制转二进制的用法

    我们在学习python时候肯定会碰到关于进制转换,其实这是非常简单的,这个就像小学学习数学乘法口诀意义,只要记住转换口诀即可轻松应用,一起来看下具体的操作内容吧~ 一.python进制转换 dec(十 ...

  3. 蓝桥杯 ADV-117 算法提高 进制转换

    问题描述 程序提示用户输入三个字符,每个字符取值范围是0-9,A-F.然后程序会把这三个字符转化为相应的十六进制整数,并分别以十六进制,十进制,八进制输出. 输入格式:输入只有一行,即三个字符. 输出 ...

  4. [Java] 蓝桥杯ALGO-85 算法训练 进制转换

    问题描述 编写一个程序,输入一个二进制的字符串(长度不超过32),然后计算出相应的十进制整数,并把它打印出来. 输入格式:输入为一个字符串,每个字符都是'0'或'1',字符串的长度不超过32. 输出格 ...

  5. 蓝桥杯 ALGO-85 算法训练 进制转换

    问题描述 编写一个程序,输入一个二进制的字符串(长度不超过32),然后计算出相应的十进制整数,并把它打印出来. 输入格式:输入为一个字符串,每个字符都是'0'或'1',字符串的长度不超过32. 输出格 ...

  6. 进制转换算法(通用,极简)

    检索词: ​ 进制转换.通用进制转换.二进制转十进制.二进制转八进制.二进制转十六进制. ​ 十进制转二进制.十六进制转二进制.八进制转二进制.通用算法.字符型输入输出 一.英文先行 英文 中文 缩写 ...

  7. python【蓝桥杯vip练习题库】ADV-309进制转换

    试题 算法提高 进制转换 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 编写函数将十进制整数按8进制输出,然后编写main函数验证该函数.例如输入12,则输出为:12=014,输入 ...

  8. Algorithm:【Algorithm算法进阶之路】之算法中的数学编程相关习题(时间速度、进制转换、排列组合、条件概率、斐波那契数列)

    Algorithm:[Algorithm算法进阶之路]之算法中的数学编程相关习题(时间速度.进制转换.排列组合.条件概率.斐波那契数列) 目录 时间速度 排列组合 进制转换 条件概率 斐波那契数列 时 ...

  9. python的用算法进制转换详解_学习python第五天进制转换

    6.进制之间的转换(重要) 二进制:满二进一 范围:0.1符号:0b例如:0b10...[注意]计算机只能识别二进制数据 八进制:满八进一 范围:0~7符号:0o例如:0o66 十进制:满十进一 范围 ...

  10. javascript进制转换_《算法笔记》3.5小节——入门模拟-gt;进制转换

    @[TOC] # Contest100000579 - <算法笔记>3.5小节--入门模拟->进制转换 ## 例题 ### PATB1022 PTA | 程序设计类实验辅助教学平台 ...

最新文章

  1. 用Leangoo项目管理软件做技术支持
  2. 前端那点事儿——Tocify自动生成文档目录
  3. 一个MySQL存储过程的模板
  4. 推荐一个妹子,播报汽车新闻
  5. QTcreator 多线程(生产者消费者)
  6. C++中函数模板template和函数参数为指针,且有返回值的结合使用
  7. 图像处理之添加文字水印
  8. 1.Swift教程翻译系列——关于Swift
  9. 基于bootstrap_登陆页面
  10. Python学习-类的继承
  11. 字幕滚动c语言程序,MFC实现字幕滚动效果
  12. 微博机器学习平台架构及在微博推荐中的应用
  13. Calico 的默认连通性 - 每天5分钟玩转 Docker 容器技术(69)
  14. php分页查询·······类
  15. php arraymap 匿名函数,结合代码详细为你讲解,php中的array_map,array_walk以及匿名函数...
  16. Java文件上传之断点续传解决方案
  17. 移动手机号神州行去香港购买境外流量包方法和注意事项
  18. Pr 音频效果参考:滤波器与 EQ
  19. 内核特征码搜索 获取未导出函数
  20. arm开发板开发环境搭建

热门文章

  1. cartographer源码解析(二)node_main.cc文件详解
  2. 查看Linux下的文件
  3. 华为---ACL配置
  4. 如何用ChatGPT制作PPT?
  5. Android 输入法框架 (2)- 输入法显示和隐藏
  6. win10计算机打印机共享怎么设置方法,Win10系统怎么设置打印机共享?Win10系统打印机共享设置教程...
  7. 关于echarts自定义合并中国地图分区展示的问题
  8. 净误差与遗漏为负值的含义_【双语】跳出“资本外逃”之争看净误差与遗漏
  9. uni-app开发中遇到的问题(持续更新...)
  10. 《东周列国志》第一回 周宣王闻谣轻杀 杜大夫化厉鸣冤