社区讨论
实在不知道错在哪里,求助
P1143进制转换参与者 3已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @lobzpcgn
- 此快照首次捕获于
- 2023/10/30 05:35 2 年前
- 此快照最后确认于
- 2023/11/04 10:51 2 年前
CPP
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
int main () {
int a, b, j = 0, sum = 0, cnt = 0, holder;
string c, rem[10001];
cin >> a >> c >> b;
for (int i = 0; i < c.length(); i++){
if (c[i] == '0') continue;
if (c[i] == '1') sum += 1 * pow(a, i);
else if (c[i] == '2') sum += 2 * pow(a, i);
else if (c[i] == '3') sum += 3 * pow(a, i);
else if (c[i] == '4') sum += 4 * pow(a, i);
else if (c[i] == '5') sum += 5 * pow(a, i);
else if (c[i] == '6') sum += 6 * pow(a, i);
else if (c[i] == '7') sum += 7 * pow(a, i);
else if (c[i] == '8') sum += 8 * pow(a, i);
else if (c[i] == '9') sum += 9 * pow(a, i);
else if (c[i] == 'A') sum += 10 * pow(a, i);
else if (c[i] == 'B') sum += 11 * pow(a, i);
else if (c[i] == 'C') sum += 12 * pow(a, i);
else if (c[i] == 'D') sum += 13 * pow(a, i);
else if (c[i] == 'E') sum += 14 * pow(a, i);
else sum += 15 * pow(a, i);
}
while (sum != 0) {
holder = sum % b;
sum = sum / b;
if (holder == 15) rem[cnt++] = 'F';
else if (holder == 14) rem[cnt++] = 'E';
else if (holder == 13) rem[cnt++] = 'D';
else if (holder == 12) rem[cnt++] = 'C';
else if (holder == 11) rem[cnt++] = 'B';
else if (holder == 10) rem[cnt++] = 'A';
else if (holder == 9) rem[cnt++] = '9';
else if (holder == 8) rem[cnt++] = '8';
else if (holder == 7) rem[cnt++] = '7';
else if (holder == 6) rem[cnt++] = '6';
else if (holder == 5) rem[cnt++] = '5';
else if (holder == 4) rem[cnt++] = '4';
else if (holder == 3) rem[cnt++] = '3';
else if (holder == 2) rem[cnt++] = '2';
else if (holder == 1) rem[cnt++] = '1';
else rem[cnt++] = '0';
}
for (int i = cnt; i >= 0; i--)
cout << rem[i];
return 0;
}
我是把string和int来回转换了两回,先把输入转成十进制,再转成要求的进制。谢谢大佬帮看!
回复
共 5 条回复,欢迎继续交流。
正在加载回复...