Algorithm 斐波那契数的幂和?

Algorithm 斐波那契数的幂和?,algorithm,fibonacci,Algorithm,Fibonacci,如何求这个级数的和 fib(0)^K + fib(C)^K + fib(2*C)^K + fib(3*C)^K + ... + fib(N*C)^K 其中约束为0

如何求这个级数的和

fib(0)^K + fib(C)^K + fib(2*C)^K + fib(3*C)^K + ... + fib(N*C)^K
其中约束为
0
0
0


这里
fib(i)
是第i个fibonacci数,其中
fib(0)=0
fib(1)=1
fib(n)=fib(n-1)+fib(n-2)
。我们必须计算求和模100000007(10^9+7)。

这基本上是一个处理递归关系的练习。要理解这个答案,您应该能够自如地在矩阵和系统形式之间切换

首先,我们得到了fib(i)^K的一个递归。这实际上涉及到一个系统的复发
fib(i)^K,fib(i)^(K-1)fib(i-1),fib(i)^(K-2)fib(i-1)^2,…,fib(i-1)^K
。我将为
K=3
演示

fib(i)^3 = (fib(i-1) + fib(i-2))^3
         = fib(i-1)^3 + 3 fib(i-1)^2 fib(i-2) + 3 fib(i-1) fib(i-2)^2 + fib(i-2)^3
fib(i)^2 fib(i-1) = (fib(i-1) + fib(i-2))^2 fib(i-1)
                  = fib(i-1)^3 + 2 fib(i-1)^2 fib(i-2) + fib(i-1) fib(i-2)^2
fib(i) fib(i-1)^2 = (fib(i-1) + fib(i-2)) fib(i-1)^2
                  = fib(i-1)^3 + fib(i-1)^2 fib(i-2)
fib(i-1)^3 = fib(i-1)^3
这些可以组合成一个矩阵

[fib(i)^3    fib(i)^2 fib(i-1)    fib(i) fib(i-1)^2    fib(i-1)^3] =
                                                                           i
= [fib(0)^3    fib(0)^2 fib(-1)    fib(0) fib(-1)^2    fib(-1)^3] [1 0 0 0]
                                                                  [3 1 0 0]
                                                                  [3 2 1 0]
                                                                  [1 1 1 1]
                     i
= [0 0 0 1] [1 0 0 0]
            [3 1 0 0]
            [3 2 1 0]
            [1 1 1 1]
你可以认出那边的帕斯卡三角形

现在,给定一个函数
f(i)
的递归系统,我们可以通过将矩阵提升到幂
c
来计算
f(ci)
的递归

最后一步是从
f(i)
的重复到
f(i)=f(0)+f(1)+……+f(i-1)
。添加一个方程式很简单

F(i) = F(i-1) + f(i-1)
与系统的连接


计算完矩阵后,根据我的估计,该矩阵最多包含
12^2=144
个元素,我们可以使用快速矩阵求幂mod
10^9+7
计算适当的幂。注意隐藏的一个错误–这就是你想要的
F(n+1)

这个问题可能更适合,因为这个问题可能需要更深入地理解斐波那契级数、幂和等,而不是算法。可能会让你走上正确的方向,尽管这只是针对
K=2
C=1
…如何定义
fib(i)
?它是第i个斐巴诺契数吗?它是比我小的最接近的Fibanocci数吗?如果是前者,我怀疑
N
的约束是否合理。这听起来像是在HackerRank或类似网站上找到的东西。你能分享原始问题的链接吗?欢迎使用堆栈溢出!请告诉我们你试过什么。这是你的问题。