题目传送门
1思路
这道题的数据奇小无比, l l l 和 r r r 才 ≤ 2 × 1 0 6 \le \ 2 \times\ 10^6 ≤ 2× 106,我们完全可以枚举 1 1 1 到 r r r,由于会超范围,需要边乘边求余,得出的结果如果在 l l l 和 r r r 之间,就是一个答案,最后在答案里求最大值。
要开 long long!!!
2代码
#include<bits/stdc++.h>//万能头yyds
using namespace std;
int main()
{
long long l,r,k,ans=0,s=1;//一定要开long long
cin>>l>>r>>k;
for(int i=1;i<=r;i++)
{
s*=i;//先乘
s%=k;//再求余,不然会超
if(i>=l)ans=max(ans,j);//如果在范围里,则求最大值
}
cout<<ans;//输出答案
return 0;
}