玩命加载中 . . .

进制转换2


http://t.cn/AiCuKG7E

描述

将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;
}

文章作者: Jack Tim
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Jack Tim !
评论
  目录