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

进制转换

程序员文章站 2022-07-13 13:17:13
...

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

#include <iostream>
#include <stdio.h>

using namespace std;

int main()
{
    int N,R;
    while(~scanf("%d",&N))
    {
        cin>>R;
        int A[100];
        int top=0;
        if(N==0)cout<<N<<endl;
        else if(N>0)
        {
            while(N!=0)
            {
                A[top]=N%R;
                top++;
                N=N/R;
            }
            while(top!=0)
            {
                top--; char a;
                if(A[top]>=10)
                {
                    a=char(55+A[top]);
                    cout<<a;
                }
                else
                cout<<A[top];
            }
             cout<<endl;
        }
        else if(N<0)
        {
            N=-N;
             while(N!=0)
            {
                A[top]=N%R;
                top++;
                N=N/R;
            }
             cout<<"-";
            while(top!=0)
            {
                top--; char a;
                if(A[top]>=10)
                {
                    a=char(55+A[top]);
                    cout<<a;
                }
                else
                cout<<A[top];
            }
             cout<<endl;
        }
    }
    return 0;
}