Если вынуть 94 конфет, то будут конфеты всех 3 видов.Пусть у нас по n конфет каждого вида.Тогда может так получиться, что мы вынем 2n конфет, и они будут только 2 видов. И только, вынув (2n+1)-ю конфету, мы получим все три.2n+1 = 942n = 93.Значит, конфет одного и другого вида по [93/2] = 46,а конфет третьего вида 47.Пусть ирисок и леденцов по 46, а шоколадных 47.Вынув 46 ирисок и 46 леденцов (92 конфет), мы получим 2 вида.Вынув 46 ирисок и 47 шоколадных (93), мы получим 2 вида.Вынув 46 леденцов и 47 шоколадных (93), мы получим 2 вида.И только вынув 94-ую (в 1 случае 93 и 94), мы получим 3 вида.ответ: всего конфет было 46 + 46 + 47 = 139.
#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;
}