#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;
}
1) program exec;
var a:array[1..20] of integer;
var p,i:integer;
begin
randomize;
for i:=1 to 20 do begin
a[i]:=random(50);
writeln (a[i]);
if (a[i] mod 2<>0) then p:=p+1;
end;
if (p>0) then writeln ('Присутствуют нечётные элементы')
else writeln ('Не присутствуют нечётные элементы');
end.
2) program exec;
var a:array[1..20] of integer;
var p,i:integer;
begin
randomize;
for i:=1 to 20 do begin
a[i]:=random(50);
writeln (a[i]);
if (a[i] mod 2=0) then a[i]:=a[i]+1
else a[i]:=a[i]*2;
end;
writeln ('---'); // разделение двух массивов
for i:=1 to 20 do writeln (a[i]);
end.
Берём русский алфавит:
АБВГҐДЕЄЁЖЗИІЇЙК ЛМНОПРСТУЎФХЦЧШЩЪЫЬЭЮЯ
Считаем буквы. 38. Добавляем строчные, итого 76.
Считаем в битах. log2(76) ~= 6,25. Округляем вверх, итого 7 битов.