ながめも

競技プログラミングについて

yukicoder No.1048 Zero (Advanced)

yukicoder.me

 L以上 R以下の数から重複を許して K個の和を取ったときにできる数の候補は、

 LK以上 RK以下である。 よって、 LK以上 RK以下で Mの倍数がいくつあるか調べればよい。

間は全部できる系である。

int main() {

    ll L, R, M, K;
    cin >> L >> R >> M >> K;
    ll l = L*K;
    ll r = R*K;
    //[0,X]にあるMの倍数の個数
    auto cnt = [&](ll X)->ll{
        if(X < 0)return 0;
        return X / M + 1;
    };
    if(cnt(r) - cnt(l-1) > 0){
        cout << "Yes" << endl;
    }
    else{
        cout << "No" << endl;
    }