题解|HJ5 进制转换
进制转换
https://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6?tpId=37&&tqId=21228&rp=1&ru=/ta/huawei&qru=/ta/huawei/question-ranking
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。保证结果在。
方法一:按照十六进制转十进制的方法直接进行转换
一般十六进制数用数字0到9和字母A到F表示,其中A~F相当于十进制的10~15,这些称作十六进制数字。十六进制转为十进制的方法是:,其中是代表第位上的数字,最高位计为 。
时间复杂度:,解释:由于是按位进行转换,所以复杂度是需要转换的十六进制数的位数。
空间复杂度:,解释:由于是按位直接进行转换,不需要额外的空间。
#include<iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <iostream>
using namespace std;
int main() {
string n;
while(cin >> n) {
int bit = 0;
int ans = 0;
int len = n.length();
for(int i = len - 1; i > 1; i--){
// 如果当前位的是1~9表示的,可以直接计算
if (n[i] >= '0' && n[i] <= '9'){
ans += (n[i]-'0') * pow(16, bit);
bit += 1;
}
// 如果当前位的是A~F表示的,要先换成十进制的10~15再计算
else if (n[i] >= 'A' && n[i] <= 'F') {
ans += (n[i] - 'A' + 10) * pow(16, bit);
bit += 1;
}
}
cout<<ans<<"\n";
}
return 0;
}
方法二:利用python特性直接进行转换
python中可以直接输入十六进制数,使用类型转换int()转换成十进制数输出即可。
时间复杂度:,解释:python中进行base为的幂的进制转换的时间复杂度为。
空间复杂度:,解释:进行转换不需要额外的空间。
while 1:
try:
num=input()
print(int(num,16))
except:
break