进制转换

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 }