[Luogu] 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;
}

浙公网安备 33010602011771号