P9707 [KMOI R1] 音波武器 题解
前缀积 + 枚举
求对于
令
注意每次递推都要模
注:所以说高精度也不是不行。
#include <bits/stdc++.h>
using namespace std;
#define int unsigned long long
const int N = 2e6 + 5;
int l, r, k, f[N], ans;
signed main() {
cin>>l>>r>>k;
f[0] = 1; // 0! = 1
for(int i = 1; i <= r; i++) {
f[i] = f[i - 1] * i; // 递推求最大值
f[i] %= k; // 注意每一步都要去模,防止炸裂
}
for(int i = l; i <= r; i++)
ans = max(f[i] % k, ans); // 打擂台取最大值
cout<<ans;
return 0;
}