12
Объяснение:
Система счисления записи чисел с цифр;
Цифры - специальные знаки или символы для записи чисел;
Алфавит - набор цифр, используемые в системе счисления;
Основание - количество цифр в алфавите.
Алфавит каждой системы счисления начинается с нуля:
2-ая (основание) система счисления: 0, 1; (содержит две цифры)
3-ая (основание) система счисления: 0, 1, 2; (содержит три цифры)
4-ая (основание) система счисления: 0, 1, 2, 3; (содержит четыре цифры)
5-ая (основание) система счисления: 0, 1, 2, 3, 4; (содержит пять цифр)
6-ая (основание) система счисления: 0, 1, 2, 3, 4, 5; (содержит шесть цифр)
7-ая (основание) система счисления: 0, 1, 2, 3, 4, 5, 6; (содержит семь цифр)
8-ая (основание) система счисления: 0, 1, 2, 3, 4, 5, 6, 7; (содержит восемь цифр)
9-ая (основание) система счисления: 0, 1, 2, 3, 4, 5, 6, 7, 8; (содержит девять цифр)
10-ая (основание) система счисления: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9; (содержит десять цифр)
11-ая (основание) система счисления: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A(10); (содержит одиннадцать цифр)
12-ая (основание) система счисления: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A(10), B(11); (содержит двенадцать цифр)
123, 4A(10)B(11), 9A(10)3, 8455
Находим наибольшие цифры в каждом числе
123, 4A(10)B(11), 9A(10)3, 8455
Находим наибольшую цифру среди всех чисел
3, B(11), A(10), 8
Наибольшая цифра = B(11) ⇒ минимальное основание = 12
#include <iostream>
typedef long long ll;
using namespace std;
bool ll_is_valid(ll t, ll N, ll x, ll y)
{
return t / x + (t - x) / y >= N;
}
ll f(ll N, ll x, ll y)
{
ll R = 1;
while (!ll_is_valid(R,N,x,y)) R *= 2;
ll L = R / 2;
while(R - L > 1)
{
ll M = (L + R) / 2;
if (!ll_is_valid(M,N,x,y)) {L = M;}
else {R = M;}
}
return R;
}
int main()
{
ll N,x,y;
cin >> N >> x >> y;
if(x > y) swap( x, y );
cout << f(N, x, y) << std::endl;
}