这道题数据范围较小,可以从1到r,用变量akioi记录1到r的阶乘,边乘边模k,最后从l到r取最大值输出即可。
# 注意,这道题k<=pow(10,12),需要开 long long
AC Code
#include<bits/stdc++.h>
using namespace std;
int main(){
long long l,r,k,akioi=1,mx=0;
cin>>l>>r>>k;//输入
for(int i=1;i<=r;i++){
akioi*=i;
akioi%=k;//计算
if(i>=l)mx=max(mx,akioi);
}
cout<<mx;//输出
return 0;//养成好习惯
}