#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;
использовать Черепаха
алг
нач
вперед (60)
влево (65)
вперед (43)
вправо (20)
вперед (28)
вправо (45)
вправо (90)
вперед (20)
влево (90)
вправо (65)
вперед (27)
вперед (40)
влево (180)
влево (45)
вперед (26)
вперед (45)
влево (155)
вперед (39)
поднять хвост
вперед (100)
опустить хвост
вперед (4)
вперед (6)
кон
Объяснение:
Смотри картинку
#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;
}
использовать Черепаха
алг
нач
вперед (60)
влево (65)
вперед (43)
вправо (20)
вперед (28)
вправо (45)
вперед (60)
вправо (90)
вперед (20)
вправо (90)
вперед (60)
влево (90)
вперед (20)
влево (65)
вперед (43)
вправо (65)
вперед (20)
вправо (45)
вперед (27)
вправо (45)
вперед (40)
вправо (45)
вперед (27)
влево (180)
вперед (27)
влево (45)
вперед (40)
вправо (90)
вперед (60)
вправо (45)
вперед (26)
вправо (20)
вперед (45)
влево (180)
вперед (45)
влево (155)
вперед (40)
вправо (45)
вперед (27)
влево (45)
вперед (40)
вправо (90)
вперед (39)
вправо (90)
вперед (40)
влево (90)
вперед (20)
влево (90)
вперед (40)
вправо (90)
вперед (39)
поднять хвост
вправо (90)
вперед (100)
опустить хвост
влево (45)
вперед (4)
влево (90)
вперед (4)
влево (90)
вперед (6)
влево (90)
вперед (4)
поднять хвост
кон
Объяснение:
Смотри картинку