#M8002. 进制转换

进制转换

进制转换


image


🌰 程序实现将 n 进制数转换成 m 进制

//将n进制数字num,转换成m进制数
//(其中2 <= n,m <= 16,n进制数对应的十进制的值不超过int范围)
#include <iostream>
#include <string> 
using namespace std;
int main() {
	int n, m;
	string num;
	cin >> n >> num >> m;
	//n进制num转换成十进制数ans
	int ans = 0, w = 1;
	int len = num.length();
	for (int i = len - 1; i >= 0; i--){
		if ('A' <= num[i] && num[i] <= 'F'){
			ans = ans + (num[i] - 'A' + 10) * w; 
		} else {
			ans = ans + (num[i] - '0') * w;
		}
		w *= n;
	}
	//十进制数ans转换成m进制
	char mnum[100] = {}, cnt = 0;
	while (ans != 0){
		int tmp = ans % m;
		if (tmp >= 10){
			mnum[cnt++] = tmp - 10 + 'A';
		}else{
			mnum[cnt++] = tmp + '0';
		}
		ans /= m;
	} 
	for (int i = cnt - 1; i >= 0; i--){
		cout << mnum[i];
	}
	return 0;
}

历年真题

Coming soon 。。。