进制转换

进制转换

 

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

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

输入

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

输出

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

示例输入

7 2
23 12
-4 3

示例输出

111
1B
-11

提示

 

来源

HDOJ

示例程序

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
long long int n,m,i,k;
int main()
{
    int num[1002];
    int j=0;
    char ch;
    while(~scanf("%lld%lld",&n,&m))
    {
        j=0;
        if(n==0)
        {
            printf("0\n");
            continue;
        }

        memset(num,0,sizeof(num));
        k=abs(n);
        while(k!=0)
        {
            i=k%m;

            num[j++]=i;
            k=k/m;
        }
        if(n>0)
        {
            for(i=j-1; i>=0; i--)
            {
                if(num[i]<10)
                    printf("%d",num[i]);
                else
                {
                    ch='A'+(num[i]-10);
                    printf("%c",ch);
                }
            }
        }

        else if(n<0)
        {
            printf("-");
            for(i=j-1; i>=0; i--)
            {
                if(num[i]<10)
                    printf("%d",num[i]);
                else
                {
                    ch='A'+(num[i]-10);
                    printf("%c",ch);
                }
            }
        }
        printf("\n");
    }
    return 0;
}

 过了几个月,再次敲这段代码,感觉有些生疏了,不过,幸好还能想得起来,下面是刚出炉的新代码,比之前的略‘短’了哦,果然那时候想的太繁琐了啊。。。

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#define off 100000

using namespace std;
long long int n,i,k;

int main()
{
    int m;
    int num[off];
    while(~scanf("%lld%d",&n,&m))
    {
        if(n==0)
        {
            printf("0\n");
            continue;
        }

        memset(num,0,sizeof(num));
        k=abs(n);
        int t=0;
        while(k != 0)
        {
            num[t++]=k%m;
            k=k/m;
        }
        if(n < 0)
        printf("-");
        for(i=t-1;i>=0;i--)
        {
            char ch='A';
            if(num[i]>=10)
            {
                ch='A'+num[i]-10;
                printf("%c",ch);
            }
            else
            printf("%d",num[i]);
        }
        printf("\n");
    }
    return 0;
}

 

posted @ 2014-08-13 23:02  夏迩  阅读(161)  评论(0)    收藏  举报