十进制转换成R进制
描述
输入一个十进制数N,将它转换成R进制数输出。
输入
输入数据包含多个测试实例,每个测试实例包含两个整数N和R(2<=R<=36).
输出
为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,16用G表示等等)。
输入样例 1
7 2 23 12 -4 3
输出样例 1
111 1B -11
提示
HINT 时间限制:200ms 内存限制:64MB
#include<bits/stdc++.h>
using namespace std;
char to_char(int num) {
if (num < 10) {
return '0' + num;
} else {
return 'A' + (num - 10);
}
}
void decimal_to_base(int n, int r, char* result) {
if (n == 0) {
sprintf(result, "0");
return;
}
int is_negative = n < 0;
n = abs(n);
int index = 0;
while (n > 0) {
int remainder = n % r;
result[index++] = to_char(remainder);
n /= r;
}
if (is_negative) {
result[index++] = '-';
}
result[index] = '\0';
for (int i = 0; i < index / 2; i++) {
char temp = result[i];
result[i] = result[index - i - 1];
result[index - i - 1] = temp;
}
}
int main() {
int n, r;
char result[50];
while (scanf("%d %d", &n, &r) != EOF) {
if (r < 2 || r > 36) {
printf("R should be between 2 and 36.\n");
continue;
}
decimal_to_base(n, r, result);
printf("%s\n", result);
}
return 0;
}
6051

被折叠的 条评论
为什么被折叠?



