0x3E @ 2024-07-03 18:59:12
#include <iostream>
using namespace std;
char arr[1000010];
int main() {
int n, r, ans = 0;
cin >> n >> r;
int a = n;
while (a >= 1) {
int i = a % r;
if (i >= '0' && i <= '9')
arr[ans++] = i;
else
arr[ans++] = i + 'A' - 1;
a /= r;
}
for (int j = ans - 1; j >= 0; j --)
cout << arr[j];
return 0;
}
by _Z_F_R_ @ 2024-07-03 19:04:45
i
是 int 类型但:
if (i >= '0' && i <= '9')
by 0x3E @ 2024-07-03 20:31:25
哦!谢谢提醒,我明白咋做了
因为
i
是
int
类型, 所以我这样改了一下
int i = a % r;
if (i >= 10)
然后我犯了一个错误,
n % r
未-10,会导致字母‘N’变成‘X’
而且0 ~ 9 的数字没有
+ '0'
也会导致ASCII码出乱。
by 0x3E @ 2024-07-03 20:35:17
这是我的
代码
#include <iostream>
using namespace std;
char arr[1000010];
int main() {
int n, r, ans = 0;
cin >> n >> r;
int a = n;
while (a >= 1) {
int i = a % r;
if (i >= 10)
arr[ans++] = i + 'A' - 10;
else
arr[ans++] = i + '0';
a /= r;
}
for (int j = ans - 1; j >= 0; j --)
cout << arr[j];
return 0;
}