进制转换
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 21421 Accepted Submission(s): 12000
Problem Description
输入一个十进制数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
1 #include<stdlib.h> 2 #include<math.h> 3 #include<iostream> 4 #include<string.h> 5 #include<algorithm> 6 using namespace std; 7 int main() 8 { 9 int n; 10 int r; 11 int m; 12 int i; 13 char s[1000]; 14 while (scanf("%d",&n)!=EOF) 15 { 16 scanf("%d",&r); 17 i=0; 18 if (n<0) 19 { 20 printf("-"); 21 n=-n; 22 } 23 while (n!=0) 24 { 25 m=n%r; 26 n/=r; 27 switch (m) 28 { 29 case 10: s[i]='A'; break; 30 case 11: s[i]='B'; break; 31 case 12: s[i]='C'; break; 32 case 13: s[i]='D'; break; 33 case 14: s[i]='E'; break; 34 case 15: s[i]='F'; break; 35 default: s[i]='0'+m; 36 } 37 i++; 38 } 39 i--; 40 for (;i>0;i--) 41 printf("%c",s[i]); 42 printf("%c\n",s[i]); 43 } 44 return 0; 45 }