Сегодня Егор в школе проходил системы счисления, ему дали следующее определение представление числа в системе счисления: Представлением целого положительного числа n в k-ичной системе счисления (k ≥ 2) называется последовательность целых неотрицательных чисел a1, ..., as такая, что ai ≤ k - 1 для всех i = 1...s и a1 ≠ 0, а также as + as - 1 · k + as - 2 · k2 + ... + a1 · ks - 1 = n.
Например, представлением числа 6 в двоичной системе счисления является последовательность 1, 1, 0, т.к. 0 + 1 · 2 + 1 · 4 = 6, а представлением числа 120 в одиннадцатиричной системе счисления являетс
картинка это 3 этап
1-й этап
Дано:
(40 − а) — количество проданных авиабилетов бизнес-класса по цене хрублей за билет;
(120 − b) — количество проданных авиабилетов экономического класса по цене х/2 рублей за билет.
Найти:
s — общую сумму, полученную компанией от продажи билетов за рейс.
2-й этап
Для нахождения s можно вычислить значение следующего выражения:
(40 − а) * х + (120 − b) * х/2.
Здесь а и b — целые величины, s — величина вещественного типа.
3-й этап
1-й этап
Дано:
(40 − а) — количество проданных авиабилетов бизнес-класса по цене хрублей за билет;
(120 − b) — количество проданных авиабилетов экономического класса по цене х/2 рублей за билет.
Найти:
s — общую сумму, полученную компанией от продажи билетов за рейс.
3-й этап
4-й этап
program n_13_63;
var a, b: integer; s, x: real;
begin
writeln (‘Подсчет суммы от продажи билетов’);
writeln (‘Количество а непроданных билетов бизнес-класса’);
readln (a);
writeln (‘Количество b непроданных билетов экономического класса’);
readln (b);
writeln (‘Стоимость билетов бизнес-класса х‘);
readln (x);
s:=(40−a)*x+(120−b)*x/2;
writeln (‘Билетов продано на ‘, s,’ руб.’)
end.
5-й этап
Протестировать программу можно по следующим данным:
а = 39,
b = 119,
х = 2000,
s = 3000.
#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;
}