洛谷-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;
}
posted @ 2020-12-26 13:41  yuzec  阅读(215)  评论(0编辑  收藏  举报