题目描述:
给出一个n进制数,要求你将其转换成m进制数。
题解:
裸的板子题,进制转换套个板子就行,我是用的十进制作为中间值转换的。
AC代码
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
#define ll long long
using namespace std;
char a[50];
int main()
{
int n,m;
ll ans1 = 0,ans2 = 0;
string ss;
cin >> n >> ss >> m;
int len = ss.length();
for(int i = 0;i < len;i++){ //n进制转十进制
ans1 *= n;
if(ss[i] >= 'A' && ss[i] <= 'F'){
ans1 += (ss[i] - 'A' + 10);
}
else{
ans1 += (ss[i] - '0');
}
}
// cout << "ans1 = " << ans1 << endl;
char z = 'A';
while(ans1 != 0){//十进制转m进制
ans2++;
a[ans2] = ans1 % m;
ans1 /= m;
if(a[ans2] > 9) a[ans2] = z + (a[ans2] - 10);
else a[ans2] += '0';
}
for(int i = ans2;i > 0;i--){
cout << a[i];
}
return 0;
}