| Run ID | 作者 | 问题 | 语言 | 测评结果 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|
| 83021 | sh25_shenpy | 进制转换 | C++ | 通过 | 0 MS | 256 KB | 1438 | 2026-01-18 21:57:38 |
#include <iostream> #include <string> #include <algorithm> // 用于反转字符串 using namespace std; // 将数字转换为负进制对应的字符(0-9 -> '0'-'9',10+ -> 'A'-'Z') char numToChar(int num) { if (num >= 0 && num <= 9) { return '0' + num; } else { return 'A' + (num - 10); } } int main() { int N, base; cin >> N >> base; // 保存原始输入的基数,用于输出 int original_base = base; // 保存转换后的结果(逆序) string result; // 处理 N=0 的特殊情况 if (N == 0) { result = "0"; } else { int n = N; while (n != 0) { int remainder = n % base; // 计算余数 n = n / base; // 先计算临时商 // 关键:调整余数为非负数 if (remainder < 0) { remainder += abs(base); // 余数 += 基数的绝对值 n += 1; // 商需要加1(抵消余数的调整) } // 将余数转换为字符,加入结果 result += numToChar(remainder); } } // 反转字符串(取余得到的是逆序) reverse(result.begin(), result.end()); // 按格式输出:原始数=转换结果(base基数) cout << N << "=" << result << "(base" << original_base << ")" << endl; return 0; }