1. 程式人生 > >CCF NOI1076. 進位制轉換【遞迴】【進位制轉換】

CCF NOI1076. 進位制轉換【遞迴】【進位制轉換】

時間限制: 1000 ms  空間限制: 262144 KB  具體限制  

題目描述

用遞迴演算法將一個十進位制數X(1<=X<=10^9)轉換成任意進位制數M(2<=M<=16)。 

輸入

一行兩個正整數X和M。

輸出

輸出X的M進位制的表示。

樣例輸入

31 16

樣例輸出

1F

題記:

這題點明瞭要用遞迴,那就遞迴吧,但是效率相比於遞推低很多。

C++程式如下:

#include <iostream>
#include <cstdio>
#include <cmath>

using namespace std;

void convert(int n, int base)  
{  
    char digit;  
  
    if(n) {  
        convert(n / base, base);  
  
        digit = n % base;  
        if(digit >= 10)  
            digit = 'A' + digit - 10;  
        else  
            digit += '0';  
        cout << digit;  
    }  
} 

int main(void)
{
    int x, m;
 
    cin >> x >> m;
    convert(x, m);
 
    return 0;
}