首页 > 其他分享 >光速幂

光速幂

时间:2022-12-04 19:01:49浏览次数:24  
标签:lfloor right frac 光速 bmod sqrt rfloor

光速幂

神犇们YY出来的算法

问题:

求\(p^q \bmod n\),其中\(p\)是定值,\(q\)的上限给定,\(n\le 10^9+7\),是定值。即必须底数固定,模数固定

询问次数大于\(10^7\)
很明显,这题卡了快速幂,所以我们考虑利用上\(p\)是定值这一条件。考虑拆解\(q\),容易发现:\(q=\sqrt{q}\left\lfloor\frac{q}{\sqrt{q}}\right\rfloor+q\bmod \sqrt{q}\)。

证明这个式子的话,由于\(q\bmod \sqrt q=q-\sqrt{q}\left\lfloor\frac{q}{\sqrt{q}}\right\rfloor\),带入即可

那么就有先用扩欧将\(q\)固定到一定范围,然后由于我们上面的式子为

\[p^q=p^{\sqrt{q}·{\frac{q}{\left\lfloor\sqrt q\right\rfloor}}}p^{p\bmod \sqrt{q}} \]

考虑预处理出\(p\)的\(1\sim\sqrt{n}\)次方,\(p^{\sqrt{n}}\)的\(1\sim \frac{n}{\sqrt{n}}\)次方,那么对于一个询问\(q\),将\(q\)分解为\(k\sqrt{n}+t\)的方式即可解决

标签:lfloor,right,frac,光速,bmod,sqrt,rfloor
From: https://www.cnblogs.com/oierpyt/p/16950417.html

相关文章