所以我遇到了这个需要计算的问题:
1 ķ +(1 + P)ķ +(1 + 2 * p)的ķ + ..... +( 1 + n * p) k %p
其中p是素数,k是严格小于p的某个数。
p小于500且n * p可以达到10 9
我能想到的唯一解决方案是从第一个到最后一个周期进行迭代,并使用取幂计算模数,但这样做成本太高我正在寻找更快的算法。
可以更快地完成吗?
答案 0 :(得分:6)
对于任何整数m
,(1+m*p)^k % p == 1
。
因此,计算
(1^k + (1+2*p)^k + (1+3*p)^k + ... + (1+n*p)^k )% p
与计算相同
(1 + 1 + 1 ... + 1) % p
括号中有n + 1
个术语。
答案是(n + 1)%p
。