HJ5 进制转换【牛客网】
文章目录
- 零、原题链接
- 一、题目描述
- 二、测试用例
- 三、解题思路
- 四、参考代码
- 4.1 手动转换
- 4.2 系统转换
零、原题链接
HJ5 进制转换
一、题目描述
二、测试用例
三、解题思路
- 基本思路:
按照十六进制转十进制的方法即可。 - 具体思路:
从字符串尾部开始,每个字符乘对应位置的权重,最后累加即可。
四、参考代码
4.1 手动转换
时间复杂度: O ( n ) \Omicron(n) O(n)【n 是字符串长度】
空间复杂度: O ( n ) \Omicron(n) O(n)
#include <iostream>
using namespace std;int main() {string str;cin >> str;long sum = 0, t = 1;for (int i = str.length() - 1; i >= 2; i--) {if (str[i] >= 'A' && str[i] <= 'F')sum += (str[i] - 'A' + 10) * t;elsesum += (str[i] - '0') * t;t *= 16;}cout << sum;
}
// 64 位输出请用 printf("%lld")
4.2 系统转换
时间复杂度: O ( n ) \Omicron(n) O(n)【n 是字符串长度】
空间复杂度: O ( n ) \Omicron(n) O(n)
#include <iostream>
using namespace std;int main() {int num;cin>>hex>>num;cout<<num;
}
// 64 位输出请用 printf("%lld")