描述
将M进制的数X转换为N进制的数输出。
输入描述:
输入的第一行包括两个整数:M和N(2<=M,N<=36)。
下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出。
输出描述:
输出X的N进制表示的数。
示例1
输入:
10 2
11
输出:
1011
备注:
注意输入时如有字母,则字母为大写,输出时如有字母,则字母为小写。
#define _CRT_SECURE_NO_WARNINGS 1
#include <bits/stdc++.h>
using namespace std;
/*
题目要求:输入时如有字母,则字母为大写,输出时如有字母,则字母为小写
比如十六进制的ABCDEF
*/
//数字转字符
char IntToChar(int x) {
if (x < 10)
return x + '0';
else
return x - 10 + 'a';
}
//字符转数字
int CharToInt(char c) {
if (c >= '0' && c <= '9')
return c - '0';
else
return c + 10 - 'A';
}
int main() {
int m, n;
cin >> m >> n;
string str;
cin >> str;
//m进制转十进制
long long number = 0;
for (int i = 0; i < str.size(); ++i) {
number *= m;
number += CharToInt(str[i]);
}
vector<char> answer;
//十进制转n进制
while (number != 0)
{
answer.push_back(IntToChar(number % n));
number /= n;
}
//逆序输出
for (int i = answer.size()-1; i >= 0; --i)
printf("%c", answer[i]);
printf("\n");
return 0;
}