这都啥年代的套路了
题意简述
For a given integer $x$ and a given prime number $p$, print
$$[(5 + 2\sqrt{6})^{1 + 2^x}]%p$$
$[A]$ means the integer part of $A$.
$T$ test cases, $T\le 1000, 1\le x< 2^32, p\le 46337$.
主要思路
不难发现 $0 < 5 - 2\sqrt{6}< 1$,所以 $[(5 + 2\sqrt{6})^K] + 1 = (5 + 2\sqrt{6})^K + (5 - 2\sqrt{6})^K$。
然后根据共轭根式的性质,若 $(5 + 2\sqrt{6})^K = A + B\sqrt{6}$,则 $(5 - 2\sqrt{6})^K = A - B\sqrt{6}$。这东西显然可以维护根式然后快速幂。
还有个问题是 $1 + 2^x$ 太大了无法直接快速幂。但注意到我们实际上是在有限域上做计算,然后除了加法单位元(即 $0 + 0\sqrt{6}$)外元素个数是 $p^2 - 1$,所以循环节必然是 $p^2 - 1$ 的因数。
于是做完了。
参考代码
1 |
|