分析
可以发现,当我们求出 \(l!\),只需要乘上 \((l+1)\) 就可以求出 \((l+1)!\)。
而因为数据范围太大,需要不断地将 \(sum \bmod k\)。
Code
#include<bits/stdc++.h>
using namespace std;
long long l,r,k,sum=1,ans;
int main(){cin>>l>>r>>k;for(long long i=2;i<=l;i++)sum=sum*i%k;//计算l的阶乘的余数ans=sum;for(long long i=l+1;i<=r;i++){sum=sum*i%k;//计算l到r区间的余数ans=max(ans,sum);//找最大值}cout<<ans;return 0;
}