进制转换
题目描述
请你编一程序实现两种不同进制之间的数据转换。
输入格式
共三行,第一行是一个正整数,表示需要转换的数的进制 $n\ (2\le n\le 16)$,第二行是一个 $n$ 进制数,若 $n>10$ 则用大写字母 $\verb!A!\sim \verb!F!$ 表示数码 $10\sim 15$,并且该 $n$ 进制数对应的十进制的值不超过 $10^9$,第三行也是一个正整数,表示转换之后的数的进制 $m\ (2\le m\le 16)$。
输出格式
一个正整数,表示转换之后的 $m$ 进制数。
样例 #1
样例输入 #1
16
FF
2
样例输出 #1
11111111
前置知识进制转换
先将 $n$ 进制转十进制,最后递归输出 $m$ 进制。
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
using namespace std;
const int N = 100;
int n, m, t = 1, ss;
char s[N];
void print(int x) // 输出
{
if (x >= m) print(x / m);
putchar(x % m > 9 ? x % m - 10 + 'A' : x % m + '0');
}
int main()
{
// freopen(".in", "r", stdin);
// freopen(".out", "w", stdout);
cin >> n >> s >> m;
for (int i = strlen(s) - 1; i >= 0; -- i) // 转十进制
{
if (isdigit(s[i])) ss += (s[i] - '0') * t;
else ss += (s[i] - 'A' + 10) * t;
t *= n;
}
print(ss);
// fclose(stdin);
// fclose(stdout);
return 0;
}
标签:10,le,转换,进制,int,P1143,洛谷,include
From: https://www.cnblogs.com/BottomchouFENG/p/17715946.html