題目鏈接
解題思路:
1、將a進制數轉換成十進制數;
2、將十進制數轉換成b進制數;
3、使用do while 循環,可以確保即使被轉換數字是 0 ,程序也能正常工作。
AC代碼:
#include<iostream>
#include<string.h>
using namespace std;
char ans[50];
int main() {
int a, b;
long long tmp;
char n[50];
while (cin >> a >> n >> b) {
tmp = 0;//保存轉換之後的十進制數
int x = 0;
int weight = 1;//保存權重
int len = strlen(n);
for (int i = len-1; i >= 0; i--) {//倒序遍歷
if (n[i] >= '0' && n[i] <= '9') {
x = n[i] - '0';
}
else if (n[i] >= 'a' && n[i] <= 'z') {
x = n[i] - 'a' + 10;
}
else if (n[i] >= 'A' && n[i] <= 'Z') {
x = n[i] - 'A' + 10;
}
tmp += x * weight;
weight *= a;
}
int time = 0;//保存結果字符串的長度
int panduan;
do {//使用do while 循環
panduan = tmp % b;
if (panduan > 9) {
ans[time++] = panduan - 10 + 'A';
}
else {
ans[time++] = panduan + '0';
}
tmp /= b;
} while (tmp > 0);
for (int i = time - 1; i >= 0; i--) {
cout << ans[i];
}
cout << endl;
}
}