Тут необходимо помнить несколько основных правил: Если в примере отсутствуют скобки и присутствуют операции - только сложение и вычитание, либо только умножение и деление - в этом случае все действия осуществляются по порядку слева на право. Например, 5+8-5=8(выполняем все по порядку - к 5 прибавляем 8, а затем отнимаем 5) Если в примере присутствуют смешанные операции - и сложение, и вычитание, и умножение, и деление, то в первую очередь выполняем операции умножение и деление, а затем только сложение или вычитание. Например, 5+8*3=29 (сначала 8 умножаем на 3, а затем прибавляем 5) Если в примере имеются скобки, то вначале выполняются действия в скобках. Например, 3*(5+8)=39 (сначала 5+8, а затем умножаем на 3)
#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;
}
Если в примере отсутствуют скобки и присутствуют операции - только сложение и вычитание, либо только умножение и деление - в этом случае все действия осуществляются по порядку слева на право.
Например, 5+8-5=8(выполняем все по порядку - к 5 прибавляем 8, а затем отнимаем 5)
Если в примере присутствуют смешанные операции - и сложение, и вычитание, и умножение, и деление, то в первую очередь выполняем операции умножение и деление, а затем только сложение или вычитание.
Например, 5+8*3=29 (сначала 8 умножаем на 3, а затем прибавляем 5)
Если в примере имеются скобки, то вначале выполняются действия в скобках.
Например, 3*(5+8)=39 (сначала 5+8, а затем умножаем на 3)