描述:
将一个十进制数N转换成R进制数输出,2≤R≤16,R≠10。
输入:
多行。第一行指出以下一共有多少组数据,后续每行包含两个整数N和R,以空格分隔,-100000≤N≤100000,2≤R≤16,R≠10。
输出:
多行。每行给出转换后的R进制数。
样例输入:
3
7 2
23 12
-4 3
样例输出:
111
1B
-11
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
char zhuanhuan(int i){
switch (i) {
case 0: return '0';
case 1: return '1';
case 2: return '2';
case 3: return '3';
case 4: return '4';
case 5: return '5';
case 6: return '6';
case 7: return '7';
case 8: return '8';
case 9: return '9';
case 10: return 'A';
case 11: return 'B';
case 12: return 'C';
case 13: return 'D';
case 14: return 'E';
case 15: return 'F';
}
return 0;
}
void fun(int N,int R,int* a,char* s){
int i=0;
if(N==0){
a[0]=0;i=1;
}
while(N){
a[i]=N%R;
N/=R;
i++;
}
for(int j=i-1,k=0;j>=0;j--,k++){
s[k] = zhuanhuan(a[j]);
}
}
int main(){
int n;
scanf("%d",&n);
int N,R;
for(int i=0;i<n;i++){
int a[100];
char s[100];
memset(s,'\0',100);
scanf("%d %d",&N,&R);
if(N<0) {
fun(N-2*N,R,a,s);
printf("-%s\n",s);
}
else {
fun(N,R,a,s);
printf("%s\n",s);
}
}
return 0;
}