1.写程序,将十进制转换成r进制,r的值是2,8,16。
【测试用例1】
Input n:20
Input r:8
output:24
【测试用例2】
Input n:30
Input r:16
output:1E
【测试用例3】
Input n:30
Input r:2
output:11110
1.写程序,将十进制转换成r进制,r的值是2,8,16。
【测试用例1】
Input n:20
Input r:8
output:24
【测试用例2】
Input n:30
Input r:16
output:1E
【测试用例3】
Input n:30
Input r:2
output:11110
代码实现如下,望采纳
#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
// 定义 r 进制的映射表
unordered_map<int, char> r_map = {
{0, '0'}, {1, '1'}, {2, '2'}, {3, '3'}, {4, '4'},
{5, '5'}, {6, '6'}, {7, '7'}, {8, '8'}, {9, '9'},
{10, 'A'}, {11, 'B'}, {12, 'C'}, {13, 'D'}, {14, 'E'}, {15, 'F'}
};
// 定义函数,用于将十进制数转换为 r 进制
string decimal_to_r(int n, int r) {
string res;
while (n) {
// 获取余数并加入结果字符串
res = r_map[n % r] + res;
// 更新 n 的值
n /= r;
}
return res;
}
int main() {
int n, r;
cin >> n >> r;
cout << decimal_to_r(n, r) << endl;
return 0;
}
代码输出结果
Input n: 20
Input r: 8
output: 24
Input n: 30
Input r: 16
output: 1E
Input n: 30
Input r: 2
output: 11110