多组询问不同指数询问$a^x$的值的trick

一般做法:对于每个询问\(x\),用快速幂求出\(a^x\)。复杂度\(\mathcal{O}(T\log{x})\)

优化:考虑到\(a\)为定值,每次只改变\(x\)的值,设\(x\)的最大值为\(N\),设\(A = \sqrt{N}\),预处理出\(a^0,a^1,\cdots,a^{A - 1}\)\((a^A)^1,(a^A)^2,\cdots,(a^A)^A\)。对于每次询问,易得:
\(a^x = (a^A)^{\lfloor\frac{N}{A}\rfloor} \cdot a^{x \mod A}\)
矩阵乘法同理。这样可以实现\(\mathcal{O}(1)\)单次查询。

posted @ 2022-07-28 22:49  luyiming123  阅读(32)  评论(0编辑  收藏  举报