3H - 进制转换
输入一个十进制数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
// itoa()是一个非标准的C/C++语言功能,因此不能好好地被所有编译器使用。在大多数Windows下的编译器通常在<cstdlib>头文件包含非标准函数。
// 因此在oj中不建议使用非标准C库里的函数
// 附C标准库:https://www.runoob.com/cprogramming/c-standard-library.html
1 #include<stdio.h> 2 #include<stdlib.h> 3 int main() 4 { 5 int n, r; 6 char s[1000]; 7 while(scanf("%d %d", &n, &r)!=EOF) 8 puts(itoa(n, s, r)); 9 return 0; 10 }
//
1 #include<stdio.h> 2 int main() 3 { 4 int n, r, t, i, len, s[1000]; 5 while(scanf("%d %d", &n, &r)!=EOF) 6 { 7 if(n==0) printf("0\n"); 8 else 9 { 10 len=0; 11 if(n<0) 12 { 13 printf("-"); 14 n=-n; 15 } 16 for(i=0;n!=0;i++) 17 { 18 t=n%r; 19 if(t>=10) s[i]='A'+t-10; 20 else s[i]=t; 21 len++; 22 n=n/r; 23 } 24 for(i=0;i<len;i++) 25 { 26 if(s[len-1-i]>=0&&s[len-1-i]<=9) printf("%d", s[len-1-i]); 27 else printf("%c", s[len-1-i]); 28 } 29 printf("\n"); 30 } 31 } 32 return 0; 33 }