特殊进制转换
输入一个十进制数 N N N ,将它转换成 R R R 进制数输出。在 10 ≤ R ≤ 16 10\le R \le16 10≤R≤16 的情况下,用 ‘A’ 表示10,用 ‘B’ 表示11,用 ‘C’ 表示12,用 ‘D’表示13,用 ‘E’ 表示14,用 ‘F’ 表示15。
输入格式
输入包含两个整数
N
(
N
≤
10000
)
N(N\le 10000)
N(N≤10000) 和
R
(
2
≤
R
≤
16
)
R(2\le R \le 16)
R(2≤R≤16)。
注 :
N
N
N可能为负整数。
输出格式
输出一行,表示转换后的数。
样例输入
23 12
样例输出
1B
解题思路
当N<0时,需要提前输出一个负号
#include<iostream>
using namespace std;
int main()
{
int n, r;
int a[10010], i = 0, j;
cin >> n >> r;
while (1)
{
a[i] = n%r;
n = n / r;
if (n == 0)break;
else if (n < 0)
{
cout << "-";
n *= -1;
}
i++;
}
for (j = i; j >= 0; j--)
{
if (a[j] > 10)
printf("%c", a[j] - 10 + 65);
else
cout << a[j];
}
}