进制转换
题目描述
输入一个十进制数N,将它转换成R进制数输出。
输入
输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。
输出
为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。
样例输入
7 2 23 12 -4 3
样例输出
111 1B -11
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2031
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<math.h>
using namespace std;
int p[110];
int main()
{
int n,m;
long long a;
while(~scanf("%d%d",&n,&m)){
int flag=0;
if(n<0){
n=n*(-1);
flag=1;
}
a=-1;
int cnt=0;
while(a!=0){
a=n/m;
p[cnt++]=n%m;
n=a;
}
if(flag) printf("-");
for(int i=cnt-1;i>=0;i--){
if(p[i]<10) printf("%d",p[i]);
else printf("%c",'A'+(p[i]-10));
}
printf("\n");
}
return 0;
}