提交时间:2023-08-21 16:25:06

运行 ID: 99036

#include <iostream> #include <algorithm> #include <string> #include <cmath> using namespace std; inline string TO_Be(int B, long long n) { string num = ""; for (; n; n /= B) num.push_back(n % B); reverse(num.begin(), num.end()); for (auto& i : num) { (i >= 0 && i <= 9) ? i += '0' : i += 'A' - 10; } return num; } inline long long B_to(int B, string n) { long long num = 0; reverse(n.begin(), n.end()); for (int i = 0; i < n.size(); i++) { if (n[i] >= '0' && n[i] <= '9') num += pow(B, i) * (n[i] - '0'); else num += pow(B, i) * (n[i] - 'A' - 10); } return num; } inline int Min(string p, string q, string r) { char MIN = *max_element(p.begin(), p.end()); MIN = max(MIN, *max_element(q.begin(), q.end())); MIN = max(MIN, *max_element(r.begin(), r.end())); return MIN - '0' + 1; } int main() { string q, p, r; cin >> p >> q >> r; for (int B = Min(p, q, r); B < 17; B++) { long long pmq = B_to(B, p) * B_to(B, q); if (TO_Be(B, pmq) == r) { cout << B; return 0; } } cout << 0; return 0; }