杭电-2031

进制转换

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


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

题解:比较水的一道题,开始一下子短路了,纯属怕自己遗忘
提供了两种方法:一:利用数据结构中vector(数组);二:利用纯C语言数组解决
下面就贴代码了
一:vector解决

#include<vector>
#include<cstdio>
using namespace std;
int main()
{
    int N,R;
    while(~scanf("%d%d",&N,&R))
    {
        vector<int>n;
        if(N==0)
            printf("0");
        if(N<0)
        {
            N=-N;
            printf("-");
        }
        while(N>0)
        {
            int i=N%R;
            n.push_back(i);
            N/=R;
        }
        for(int j=n.size()-1;j>=0;j--)
        {
            switch(n[j])
            {
                case 10:printf("A");break;
                case 11:printf("B");break;
                case 12:printf("C");break;
                case 13:printf("D");break;
                case 14:printf("E");break;
                case 15:printf("F");break;
                default:printf("%d",n[j]);
            }
        }
        printf("\n");
    }
    return 0;
}

二:纯C语言数组:

#include<cstdio>
int main()
{
    int a[10000];
    int n,r;
    while(~scanf("%d%d",&n,&r))
    {
        if(n<0)
        {
            n=-n;
            printf("-");
        }
        if(n==0)
            printf("0");
        int j=0;
        while(n>0)
        {
            int i=n%r;
            a[j++]=i;
            n/=r;
        }
        for(int i=j-1;i>=0;i--)
        {
            switch(a[i])
            {
                case 10:printf("A");break;
                case 11:printf("B");break;
                case 12:printf("C");break;
                case 13:printf("D");break;
                case 14:printf("E");break;
                case 15:printf("F");break;
                default :printf("%d",a[i]);
            }
        }
        printf("\n");
    }
    return 0;
}

小白心得

猜你喜欢

转载自blog.csdn.net/boliu147258/article/details/87912015