HDU-6608

Posted vagrant-ac

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU-6608相关的知识,希望对你有一定的参考价值。

题目:HDU-6608 题使用的数学思想:威尔逊定理+逆元+快速幂 威尔逊定理:当且仅当p为素数时:( p -1 )! ≡ -1 ( mod p )。 逆元:x%mod/y%mod=x*pow(y,mod-2,mod); 题意:T组样例,给出一个P求出仅次于P的素数Q, 威尔逊定理: (P-1)! ≡ -1(mod P) 推广为:Q!*(Q+1)*......*(P-2)*(P-1) ≡ -1(mod P); Q!=-1(mod P)/(Q+1)*......*(P-2)*(P-1) 思路:使用暴力求出Q在使用威尔逊定理求出结果 注意:大数相乘会因为溢出出现问题。wa了N次祝你好运 AC-code: #include #include using namespace std; typedef long long ll; ll Prime(ll X) ll i,x=sqrt((double)(X+0.5)); for(i=2;i<=x;i++) if(X%i==0)return 0; return 1; ll mult(ll A,ll B,ll Mod) return (A*B-(ll)((long double)A*B/Mod)*Mod+Mod)%Mod; ll pow(ll x,ll y,ll mod) ll res=1; while (y) if(y%2)res=mult(res,x,mod); y=y/2;x=mult(x,x,mod); return res%mod; int main() ll P,Q,i;int T; scanf("%d",&T); while(T--) scanf("%lld",&P); //暴力求Q Q=P; while(--Q) if(Prime(Q))break; //求Q+1.....P-1 ll ret=1; for(i=Q+1;i以上是关于HDU-6608的主要内容,如果未能解决你的问题,请参考以下文章

[hdu-6608] Fansblog 威尔逊定理 质数的密度分布 2019 多校 3

hdu多校第三场 1006 (hdu6608) Fansblog Miller-Rabin素性检测