SRM 661 Div1 Easy MissingLCM
lcm は、各素数ごとに max を取るのと同じなので、各素数ごとに独立に M の lower bound を計算できる。
class MissingLCM { public: bool isPrime(ll x){ if(x<=1) return false; for(ll i = 2; i*i <= x; i++) if(x%i==0) return false; return true; } int getMin(int N) { ll res = N+1; for(ll i = 2; i <= N; i++){ if(!isPrime(i)) continue; ll j = i; while(j*i<=N) j *= i; ll x = (N/j+1)*j; chmax(res, x); } return res; } };