酷代码 AI
菜单
服务商

巧用程序:找出让 p * q = r 成立的最小进制!

```cpp #include <iostream> #include <string> #include <algorithm> using namespace std; // 将字符串s按进制B转换为十进制数 long long convertToDecimal(const string& s, int B) { long long num = 0; for (char c : s) { int digit; if (c >= '0' && c <= '9') { digit = c - '0'; } else { digit = c - 'A' + 10; // 本题输入都是数字,此分支不会执行 } if (digit >= B) return -1; // 数字不能大于等于进制B num = num * B + digit; if (num > 1000000) return -1; // 超过范围提前结束 } return num; } int main() { string p_str, q_str, r_str; cin >> p_str >> q_str >> r_str; // 找出所有数字中的最大数字,最小进制至少是最大数字+1 int max_digit = 0; for (char c : p_str) max_digit = max(max_digit, c - '0'); for (char c : q_str) max_digit = max(max_digit, c - '0'); for (char c : r_str) max_digit = max(max_digit, c - '0'); // 从最小可能的进制开始尝试 for (int B = max_digit + 1; B <= 36; B++) { // 最大进制设为36 long long p = convertToDecimal(p_str, B); if (p == -1) continue; long long q = convertToDecimal(q_str, B); if (q == -1) continue; long long r = convertToDecimal(r_str, B); if (r == -1) continue; // 检查是否满足 p * q == r if (p * q == r) { cout << B << endl; return 0; } } // 没有找到合适的进制 cout << 0 << endl; return 0; } ``` ######[AI问答 | 474点数解答 | 2026-01-20 17:30:22]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]