#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;
Program lol;
Var
x : array[1..3] of real;
y : array[1..3] of real;
a,b,c,p,s : real;
begin
write('Введите координаты точки А: ');
readln(x[1],y[1]);
write('Введите координаты точки B: ');
readln(x[2],y[2]);
write('Введите координаты точки C: ');
readln(x[3],y[3]);
a := sqrt((x[1]-x[2])**2 + (y[1]-y[2])**2);
b := sqrt((x[1]-x[3])**2 + (y[1]-y[3])**2);
c := sqrt((x[2]-x[3])**2 + (y[2]-y[3])**2);
p := (a + b + c) / 2;
s := sqrt(p * (p-a) * (p-b) * (p-c));
writeln('Площадь тр-ка S = ', s);
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;
}
Program lol;
Var
x : array[1..3] of real;
y : array[1..3] of real;
a,b,c,p,s : real;
begin
write('Введите координаты точки А: ');
readln(x[1],y[1]);
write('Введите координаты точки B: ');
readln(x[2],y[2]);
write('Введите координаты точки C: ');
readln(x[3],y[3]);
a := sqrt((x[1]-x[2])**2 + (y[1]-y[2])**2);
b := sqrt((x[1]-x[3])**2 + (y[1]-y[3])**2);
c := sqrt((x[2]-x[3])**2 + (y[2]-y[3])**2);
p := (a + b + c) / 2;
s := sqrt(p * (p-a) * (p-b) * (p-c));
writeln('Площадь тр-ка S = ', s);
end.
Результат: