输入一个十进制数N,将它转换成R进制数输出。
Input
输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。
Output
为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。
Sample Input
7 2 23 12 -4 3
Sample Output
111 1B -11
题记:
注意n为负数和r>16的情况。
C++程序如下:
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
void convert(int n, int base)
{
char digit;
if(n) {
if(n < 0){
n = -n;
cout << "-" ;
}
convert(n / base, base);
digit = n % base;
if(digit >= 10)
digit = 'A' + digit - 10;
else
digit += '0';
cout << digit;
}
}
int main(void)
{
int n, r;
while(cin >> n >> r){
if(r>16)
convert(n, 16);
else
convert(n, r);
cout << endl;
}
return 0;
}