1. 程式人生 > 實用技巧 >洛谷-P1143 進位制轉換

洛谷-P1143 進位制轉換

洛谷-P1143 進位制轉換

原題連結:https://www.luogu.com.cn/problem/P1143


題目描述

請你編一程式實現兩種不同進位制之間的資料轉換。

輸入格式

共三行,第一行是一個正整數,表示需要轉換的數的進位制\(n(2≤n≤16)\),第二行是一個n進位制數,若\(n>10\)則用大寫字母\(A-F\)表示數碼\(10-15\),並且該\(n\)進位制數對應的十進位制的值不超過\(1000000000\),第三行也是一個正整數,表示轉換之後的數的進位制\(m(2≤m≤16)\)

輸出格式

一個正整數,表示轉換之後的\(m\)

進位制數。

輸入輸出樣例

輸入 #1

16
FF
2

輸出 #1

11111111

C++程式碼

#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;

char a[35];

int main() {
    int i, n, m, t, d=0;
    string b;
    cin >> n >> b >> m;
    int len = b.size();
    for (i=len-1; i>=0; --i) {
        t = (b[i]<'A')?(b[i]-'0'):(b[i]-'A'+10);
        d += t * pow(n, len-i-1);
    }
    for (i=0; d!=0; ++i) {
        t = d % m;
        a[i] = (t<10)?(t+'0'):(t-10+'A');
        d /= m;
    }
    for (--i; i>=0; --i)
        cout << a[i];
    cout << endl;
    return 0;
}