1. 程式人生 > >codevs之旅:1474 十進位制轉m進位制

codevs之旅:1474 十進位制轉m進位制

1474 十進位制轉m進位制   http://codevs.cn/problem/1474/

 

 時間限制: 1 s

 空間限制: 128000 KB

 題目等級 : 白銀 Silver

題解

 檢視執行結果

題目描述 Description

將十進位制數n轉換成m進位制數 m<=16

n<=100

輸入描述 Input Description

共一行

n和m

輸出描述 Output Description

共一個數

表示n的m進位制

樣例輸入 Sample Input

樣例1:10 2

樣例2:100 15

樣例輸出 Sample Output

樣例1:1010

樣例2:6A

資料範圍及提示 Data Size & Hint

用反向取餘法

 

解答:這個題之前應該使用java做過,現在用c++做幾分鐘就寫出來了。不得不說自己好像有點進步,哈哈。

核心思想其實就是除m取餘,之後把餘數從後向前組合就是轉化之後的數字。

程式碼如下:

#include<bits/stdc++.h>
using namespace std;

int main()
{
    int n,m;
    int b=0;
    int i=0;
    cin>>n>>m;
    int a[100];
    while(n!=0)
    {
        b = n%m;
        a[i] = b;
        i++;
        n = n/m;
    }
    for(int j=i-1; j>=0; j--)
    {
        if(a[j]==10) cout<<'A';
        else if(a[j]==11) cout<<'B';
        else if(a[j]==12) cout<<'C';
        else if(a[j]==13) cout<<'D';
        else if(a[j]==14) cout<<'E';
        else if(a[j]==15) cout<<'F';
        else cout<<a[j];
    }
    return 0;
}