来源:https://www.cnblogs.com/Vagrant-ac/p/11348787.html
题目: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