#include <bits/stdc++.h>
using namespace std;
#define int long long
#define double long double
int tod(char c) {
return isdigit(c) ? c - 48 : c - 97 + 10;
}
int getd(string s, int radix) {
int x(0);
for (int i = 0; i < s.size(); i++) {
(x *= radix) += tod(s[i]);
}
return x;
}
void solve() {
string a, b;
int tag, radix;
cin >> a >> b >> tag >> radix;
if (tag == 2) swap(a, b);
int x = getd(a, radix);
int l = tod(*max_element(b.begin(), b.end())) + 1;
int r = x + 1;
while (l <= r) {
int mid = (r - l) / 2 + l;
int y = getd(b, mid);
if (x < y || y < 0) {
r = mid - 1;
} else if (x > y) {
l = mid + 1;
} else {
cout << mid << "\n";
return;
}
}
cout << "Impossible\n";
}
int32_t main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int tt(1);
//std::cin >> tt;
while (tt--) {
solve();
}
return 0;
}
1010 Radix
最新推荐文章于 2024-05-28 21:13:10 发布