Fansblog
Farmer John keeps a website called ‘FansBlog’ .Everyday , there are many people visited this blog.One day, he find the visits has reached P , which is a prime number.He thinks it is a interesting fact.And he remembers that the visits had reached another prime number.He try to find out the largest prime number Q ( Q < P ) ,and get the answer of Q! Module P.But he is too busy to find out the answer. So he ask you for help. ( Q! is the product of all positive integers less than or equal to n: n! = n * (n-1) * (n-2) * (n-3) *… * 3 * 2 * 1 . For example, 4! = 4 * 3 * 2 * 1 = 24 )
First line contains an number T(1<=T<=10) indicating the number of testcases. Then T line follows, each contains a positive prime number P (1e9≤p≤1e14)
分析
这题得知道2个结论,然而我都不知道。
威尔逊定理
当P为质数时,$(P-1)! \equiv -1 \pmod P$.
注意这里$!$是阶乘,不是取反的意思。
素数分布
当范围变大时,素数的出现频率增高,寻找一素数的相邻素数复杂度逐渐趋近于线性。
所以,寻找素数P的前一个素数可以直接暴力找。找到之后利用$(P-1)! \equiv -1 \pmod P$即可快速由$P-1$的阶乘通过逆元转到$Q$的阶乘,这题就做完了。
因为在计算逆元时会爆ll,使用快速乘法来避免,复杂度符合要求。
代码
|
|