ACM 水题进制转换

来源:互联网 发布:单反照片导入mac 编辑:程序博客网 时间:2024/06/05 15:33

进制转换

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 49067    Accepted Submission(s): 26945


Problem Description
输入一个十进制数N,将它转换成R进制数输出。
 

Input
输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。
 

Output
为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。
 

Sample Input
7 223 12-4 3
 

Sample Output
1111B-11
 

思路:首先其定义了R的范围这样就能开一个数组存放每一位的符号,其次进行不断取模,将得到的书到开的这个数组中查找,之后的问题就很简单了。


代码:

#include<stdio.h>

int main()
{
    int a,b;
    char m[100];
    int flag;
    int i;
    int ar[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    while(scanf("%d %d",&a,&b)!=EOF)
    {
       if(a<0)
       {
           a = a*-1;
           flag=-1;
       }
       else flag=1;
       for(i=0; ;i++)
       {
            m[i]=ar[a%b];
           {
               if(a/b==0)
               {
                   break;
               }
               a = a/b;
           }
       }
       if(flag==-1)
       {
           printf("-");
       }
       for(;i>=0;i--)
       {
           printf("%c",m[i]);
       }
       printf("\n");
    }
    return 0;
}


0 0