这道题和我们广东省赛的一道题很像但是感觉更难一点吧。感觉就是你要是不知道等比数列的求和就应该想不出来,然后也是打重现赛的时候现场实现也还行吧。先上题目
主要是要知道等比数列求和的另一种求法(现在写这篇博客也是为了防止自己又忘了吧...)
求等比为k的等比数列之和T[n]..
当n为偶数..T[n] = T[n/2] + pow(k,n/2) * T[n/2]
n为奇数...T[n] = T[n/2] + pow(k,n/2) * T[n/2] + 等比数列第n个数的值
比如 1+2+4+8 = (1+2) + 4*(1+2)
1+2+4+8+16 = (1+2) + 4*(1+2) + 16
就是这么一个递归的公式,然后实现起来也不算很难,还有就是注意快速幂取模了。
下面上代码 q是公比 n是项数 p是模数