P9707 题解

· · 题解

P9707 题解

1 开始一直枚举至 r,计算阶乘,然后取模,这是暴力方法。

但注意到 l,r \in [1,2\times 10^6]l!r! 肯定会爆掉,所以不能直接算,要边乘边取模,然后更新最大值。

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

const ll N = 11451;

ll l, r, k, maxn = 0, p = 1; 

int main() {

    cin >> l >> r >> k;
    for (ll i = 1; i <= r ; ++i) {
        p = (p * i) % k;
        if (i >= l) {
            maxn = max (maxn, p);
        }
    }
    cout << maxn;

    return 0;
}