M斐波那契数列F[n]是一种整数数列,它的定义如下:
F[0] = a
F[1] = b
F[n] = F[n-1] * F[n-2] ( n > 1 )
现在给出a, b, n,你能求出F[n]的值吗?
思路:首先我们很容易得到F[n]的通项公式,对于F[n]=a^(f[n-1])*b^(f[n]),其中f[n]为斐波那契数列的第n项。由于我们要求的n很大(最大可达到10^9),所以我们不能直接求,这时我们可以用矩阵加速用O(logn)的复杂度来求f[n],然后再用乘方快速幂求最终的结果。但是我们这里要求的结果是模上1000000007后(设为mod)的值,所以在矩阵加速的时候不能直接模上mod。这里用到了一个数论的知识,就是若a,b互质,则a^(b-1)%b==1,因为mod是一个素数,所以对于任何a,b(