题解:
化简之后F(i)=i+3;因为L,R很大,但是P很小,只要R-L+1>=P
则L到R中一定存在P的倍数,因此输出0便可,否则循环求解。
代码:
#include<cstdio>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
#define ll long long
int main()
{
int T,cas=0;scanf("%d",&T);
while(T--)
{
ll L,R,p;scanf("%lld%lld%lld",&L,&R,&p);
if(R-L+1>p)printf("Case #%d: 0\n",++cas);
else
{
ll ans=1;
for(ll i=L+3;i<=R+3;i++)
ans=(ans%p)*(i%p);//两个数都取余,否则会爆long long
printf("Case #%d: %lld\n",++cas,ans%p);
}
}
return 0;
}
校赛热身 Problem D. Unsolved Mystery
最新推荐文章于 2024-08-07 14:40:04 发布