Для записи кода используется 14 букв разного регистра, всего их получается 28.
2 ** 1 = 2
2 ** 2 = 4
2 ** 3 = 8
2 ** 4 = 16
2 ** 5 = 32
Для записи символа нам хватит пяти бит.
Если личный код состоит из 20 букв, для его записи нам потребуется 20 * 5 байт= 100 бит.
Байт = 8 бит. Чтобы записать код необходимо 100 / 8 = 12.5 байт
По условию, он записывается на минимальном целом кол-ве байт. округляем необходимое для записи место в большую сторону и получим 13 байт.
13 байт занимает личный код сотрудника
Код подразделения - целое четырёхзначное число. Чтобы записать число от 1000 до 1999 как двоичное, нужно чтобы кодировка вмещала 1000 значений. (не написано что каждая цифра кодируется отдельно)
2 ** 10 = 1024
Для записи числа необходимо 10 бит. 10 бит это 1.25 байт, а значит для записи потребуется 2 байта.
2 байта занимает личный код сотрудника
30 байт - (13 байта на личный код + 2 байта на код подразделения) =
15 байт.
15 байт выделено для хранения дополнительных сведений об одном сотруднике.
#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;
}
Для записи кода используется 14 букв разного регистра, всего их получается 28.
2 ** 1 = 2
2 ** 2 = 4
2 ** 3 = 8
2 ** 4 = 16
2 ** 5 = 32
Для записи символа нам хватит пяти бит.
Если личный код состоит из 20 букв, для его записи нам потребуется 20 * 5 байт= 100 бит.
Байт = 8 бит. Чтобы записать код необходимо 100 / 8 = 12.5 байт
По условию, он записывается на минимальном целом кол-ве байт. округляем необходимое для записи место в большую сторону и получим 13 байт.
13 байт занимает личный код сотрудника
Код подразделения - целое четырёхзначное число. Чтобы записать число от 1000 до 1999 как двоичное, нужно чтобы кодировка вмещала 1000 значений. (не написано что каждая цифра кодируется отдельно)
2 ** 10 = 1024
Для записи числа необходимо 10 бит. 10 бит это 1.25 байт, а значит для записи потребуется 2 байта.
2 байта занимает личный код сотрудника
30 байт - (13 байта на личный код + 2 байта на код подразделения) =
15 байт.
15 байт выделено для хранения дополнительных сведений об одном сотруднике.