У каждой лошади свой уникальный номер, то есть количество номеров равно 20. Для кодирования двадцати различных значений требуется как минимум 5 бит. Разберёмся, почему именно пять бит: Кол-во комбинаций, которые мы можем закодировать неким количеством бит, вычисляется по формуле 2^i, где i - количество бит, которое нужно для кодирования такого количества комбинаций. Если мы возьмем 4 бита, то сможем закодировать максимум 2^4=16 комбинаций, не хватает. Пятью битами мы можем закодировать 2^5=32 комбинации, чего достаточно.
Во фразе "только 15 и 20", видимо, была пропущена буква "з", то есть можно прочитать как "только 15 из 20".
На финиш пришло 15 лошадей, номер каждой занимает 5 бит, общее количество бит равно 15*5 = 75 бит.
Для кодирования двадцати различных значений требуется как минимум 5 бит.
Разберёмся, почему именно пять бит:
Кол-во комбинаций, которые мы можем закодировать неким количеством бит, вычисляется по формуле 2^i, где i - количество бит, которое нужно для кодирования такого количества комбинаций.
Если мы возьмем 4 бита, то сможем закодировать максимум 2^4=16 комбинаций, не хватает. Пятью битами мы можем закодировать 2^5=32 комбинации, чего достаточно.
Во фразе "только 15 и 20", видимо, была пропущена буква "з", то есть можно прочитать как "только 15 из 20".
На финиш пришло 15 лошадей, номер каждой занимает 5 бит, общее количество бит равно 15*5 = 75 бит.
ответ: 75
#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;
}