当前位置:网站首页>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;
}
边栏推荐
猜你喜欢
随机推荐
关于振弦采集模块及采集仪振弦频率值准确率的问题
结合“xPlus”探讨软件架构的创新与变革
Oracle ASM disk group replaces old storage scheme with new storage
分布式系统设计策略
leetcode:761. 特殊的二进制序列【递归 + 转换有效括号】
键值数据库中的键是什么类型的对象呢?
模式识别 学习笔记:第八章 特征提取
二、线性结构
一文读懂配置管理(CM)
2G 3G 4G 5G 基站覆盖范围
上海控安SmartRocket系列产品推介(二):SmartRocket Modeler可视化建模开发工具
Yizhou Financial Analysis | Internet-based small loan platform intensively increased capital; comprehensive evaluation index of bank wealth management subsidiaries released in the first half of the ye
Postman使用简单演示
分分钟快速定制您的专属个性化软件应用——BizTool自动化工具简介
持久化键值数据库的数据是保存在内存中吗?
Jingdong, zhang, director of the cloud wireless products division treasure jingdong cloud wireless treasure close relationship with the open source | the great god, open source BUFF gain strategy revi
Kunpeng Developer Creation Day 2022: Kunpeng Full-Stack Innovation and Developers Build Digital Hunan
dedecms支持Word图文一键导入
测试开发专栏——序言:总结过去,展望未来
ReentrantLock原理,ReentrantLock和synchronized区别









