Вся заштрихованная область представляет собой решение некоторой системы уравнений. Например, I четверть координатной плоскости задается x > 0, y > 0. Этот случай относится к тому, что область принадлежит той самой I четверти.
Теперь у нас есть два варианта решения: проверить принадлежности x к отрезку (0; 7), а затем разбить на два условия: если точка принадлежит отрезку (0;5], то координата y должна принадлежать (0;5). Иначе если координата икс в отрезке [5;7), то координата y должна быть меньше некоторой линейной функции, проходящей через точки (5;5) и (7;0)
Второй вариант (он будет оптимальнее): сначала проверить принадлежность координаты y в отрезке (0;5). Если это так, то проверить выполнение условия 0 < x < f(y), где f(y) - это некоторая линейная функция.
Давайте найдем эту линейную функцию.
Если линейная функция задается уравнением y = kx + b, то справедлива система:
От второго отнимаем первое уравнение, получаем 2k = -5, или k = -2.5, а b будет при этом равно 17,5
Теперь найдем обратную функцию (решать будем по второму варианту)
Теперь, точка считается внутри фигуры, если выполняется:
0 < y < 5
0 < x < 7 - 0.4y
Сама программа:
program task;
var x, y: real;
begin
writeln('Введите координаты точки х и y: ');
readln(x, y);
if ((y > 0) and (y < 5)) then begin
if ((x > 0) and (x < 7 - 0.4*y)) then writeln('Попадает')
Объяснение:
Немного математики:
Вся заштрихованная область представляет собой решение некоторой системы уравнений. Например, I четверть координатной плоскости задается x > 0, y > 0. Этот случай относится к тому, что область принадлежит той самой I четверти.
Теперь у нас есть два варианта решения: проверить принадлежности x к отрезку (0; 7), а затем разбить на два условия: если точка принадлежит отрезку (0;5], то координата y должна принадлежать (0;5). Иначе если координата икс в отрезке [5;7), то координата y должна быть меньше некоторой линейной функции, проходящей через точки (5;5) и (7;0)
Второй вариант (он будет оптимальнее): сначала проверить принадлежность координаты y в отрезке (0;5). Если это так, то проверить выполнение условия 0 < x < f(y), где f(y) - это некоторая линейная функция.
Давайте найдем эту линейную функцию.
Если линейная функция задается уравнением y = kx + b, то справедлива система:
От второго отнимаем первое уравнение, получаем 2k = -5, или k = -2.5, а b будет при этом равно 17,5
Теперь найдем обратную функцию (решать будем по второму варианту)
Теперь, точка считается внутри фигуры, если выполняется:
0 < y < 5
0 < x < 7 - 0.4y
Сама программа:
program task;
var x, y: real;
begin
writeln('Введите координаты точки х и y: ');
readln(x, y);
if ((y > 0) and (y < 5)) then begin
if ((x > 0) and (x < 7 - 0.4*y)) then writeln('Попадает')
else writeln('Не попадает')
end;
end.
#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;
}