c++ 进制转换

题目描述

关于把整数N由十进制转化为R进制,我们习惯用的办法是“除R倒取余”,这种方法需要用N反复对R进行除法操作,并在做除法操作的时候记录每个余数,最后反序输出。实际上,关于进制转换,用递归的方法求解会更加简洁明了,你知道怎么做么?

输入

两个正整数N,R。1 <= N <= 10000,2 <= R <= 10。

输出

用递归的方法求十进制的N转化为R进制的结果。

样例输入

52 2

样例输出

110100

提示

Source Code

#include <iostream>
using namespace std;
int main()
{
    long n;
    int p,c,m=0,s[100];
    cin >> n;//n是要转换的数 (有可能很长) 
    cin >> p;//p是进制数 
    while (n != 0)//当n被取完时退出循环 
    {
        c = n % p;//c是分离出来此进制的第一位
        n = n / p;//对2取整
        m ++;//转换后一共有几位 
        s[m] = c;//把转换后的单个位放到数组里面 
    }
    for(int k = m;k >= 1;k --)//按格式输出 
    {
        if(s[k] >= 10)
            cout << (char)(s[k]+55);
        else        
            cout << s[k];
    }
    cout << endl;
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/LJA001162/p/11334870.html