当前位置:网站首页>Acwing3452. 进制转换
Acwing3452. 进制转换
2022-08-08 11:13:00 【理工大猪猪】
写出一个程序,输入一个十六进制的数值字符串,输出该数值的十进制字符串。
输入格式
输入包含多组测试数据。
每组数据占一行,包含一个十六进制的数值字符串。
输出格式
每组数据输出一行结果,表示给定数值的十进制字符串。
数据范围
每个输入最多包含 100 组数据。
所有答案均在 int 范围内。
输入样例:
0xA
输出样例:
10
思路
16进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……
所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。
例:2AF5换算成10进制:
用竖式计算:
第0位: 5 * 16^0 = 5
第1位: F * 16^1 = 240
第2位: A * 16^2= 2560
第3位: 2 * 16^3 = 8192
10997
直接计算就是:
5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
string n;
int get(string n, int dex)
{
int res = 0, k = 0;
for (int i = n.size() - 1; i >= dex; i --)
{
if (n[i] >= 'A' && n[i] <= 'F') res += (n[i] - 'A' + 10) * pow(16, k ++);
else if (n[i] >= 'a' && n[i] <= 'f') res += (n[i] - 'a' + 10) * pow(16, k ++);
else res += (n[i] - '0') * pow(16, k ++);
}
return res;
}
int main()
{
while (cin >> n)
{
if (n[2] == 'x') cout << '-' << get(n, 3) << endl;
else cout << get(n, 2) << endl;
}
return 0;
}
边栏推荐
猜你喜欢
Software testing testing on behalf of the user
【访谈】Eotalk Vol.01:Eoapi,我们希望以开源的方式构建 API 生态系统
目标检测中的Bounding Box Regression Loss
#yyds干货盘点#【愚公系列】2022年08月 Go教学课程 005-变量
【地平线旭日X3派试用体验】WIFI连接,SSH登录,TogetherROS安装(第二节)
移动适配vw/vh方法—vw/vh实例—模拟B站手机端首页—获取样式教程视频
Hystrix熔断器
网盘目录搜索系统源码+搭建教程
Pattern Recognition Study Notes: Chapter 6 Other Classification Methods (Continuously updated...)
小程序使用npm包
随机推荐
NoSQL有哪些特点呢?
结合“xPlus”探讨软件架构的创新与变革
关于那些我们都听过的营销工具—优惠券
One article to understand configuration management (CM)
深度学习网络结构图绘制工具及方法
测试开发专栏——序言:总结过去,展望未来
3D激光SLAM:LIO-SAM整体介绍与安装编译
Software testing testing on behalf of the user
Postman使用简单演示
神经网络分类
TCP通信
读取SolidWorks文档中的属性,生成PDF(工具开发)
三、集合与字典
部署spark2.2集群(standalone模式)
关系型数据库的优缺点是什么?
字节也开始缩招了...
ReentrantLock原理,ReentrantLock和synchronized区别
Leetcode 105. 从前序与中序遍历序列构造二叉树
文档数据库中的文档有什么用呢?
day02 -DOM—高级事件(注册事件、事件监听、删除事件、DOM事件流、事件对象、阻止默认行为、阻止事件冒泡、事件委托)—常用鼠标事件—常用的键盘事件