刚刚我用一种歪解(费马小定理+暴力)卡过了P1082,现在想卡掉自己这个解,但试了几组发现行不通。b为2e9时暴力循环还跑不到1e8。求HACK。
代码
#include<stdio.h>
#define ll unsigned long long
ll a,p;
ll qpow(ll a,ll b,const ll p){
ll c=1;
while(b){
if(b&1)c=c*a%p;
a=a*a%p,b>>=1;
}return c;
}
int main(){
scanf("%llu%llu",&a,&p);
for(ll i=2;i*i<=p;++i)if(p%i==0)goto D;
printf("%llu",qpow(a,p-2,p));
return 0;
D:ll c=a,d;
for(;(d=c*a%p)^1;c=d);
printf("%llu",c);
return 0;
}
吃饭去了,14点之后再看。