进制转换(高级版^^)

输入一个十进制数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 <stdio.h>

#include <string.h>

#include <deque>

#include <algorithm>

#include <iostream>

using namespace std;

int fun(int n,int r)

{

    if(n==0)

        return 1;

    fun(n/r,r);

    if(n%r>=10)

    {

        int m=n%r-10;

        char c='A';

        printf("%c",c+m);

    }

    else

        printf("%d",n%r);

    return n;

}

int main()

{

    int n,r;

    while(~scanf("%d%d",&n,&r))

    {

        if(n>0)

           fun(n,r);

        else

        if(n==0)

           printf("0");

        else

        {

            printf("-");

            fun(-n,r);

        }

        puts("");

    }

}

猜你喜欢

转载自blog.csdn.net/zcy19990813/article/details/81067368