欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【TOJ 1386】进制转换

程序员文章站 2022-03-30 09:59:20
Description 输入一个十进制数N,将它转换成R进制数输出。 Input 输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16) Output 为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示, ......

 

Description

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

Input

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

Output

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

Sample Input 

7 2
23 12
-4 3

Sample Output

111
1B
-11

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    int n,r,t,a[101],i;
    while(scanf("%d%d",&n,&r)!=EOF)
    {
        if(n<0)
        {
            n=-n;                        //如果十进制数n是负数,看成正数
            printf("-");                 //再打印负号
        }     
        if(n==0)
        printf("0");                     //如果十进制数是0,直接输出0
        for(i=1;n>0;i++)                 //当n=0时跳出
        {
            t=n%r;                       //t为十进制数除r进制数的余数
            a[i]=t;                      //保存该余数
            n=n/r;                       
        }    
        for(i=i-1;i>=1;i--)              //倒序输出
        { 
            if (a[i]==10)
            printf("A"); 
            else if (a[i]==11)
            printf("B"); 
            else if (a[i]==12)
            printf("C"); 
            else if (a[i]==13)
            printf("D"); 
            else if (a[i]==14)
            printf("E"); 
            else if (a[i]==15)
            printf("F"); 
            else printf("%d", a[i]); 
        }
        printf("\n");
    }
    return 0;
}