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

posted @ 2023-11-17 20:47  FurippuWRY  阅读(21)  评论(0)    收藏  举报