矩阵快速幂求斐波那契数列的代码
时间: 2024-01-16 14:16:02 浏览: 84
斐波那契数列可以使用矩阵快速幂来求解,具体代码如下:
```python
def matrix_pow(a, n, mod):
res = [[1, 0], [0, 1]]
while n > 0:
if n & 1:
res = matrix_multiply(res, a, mod)
a = matrix_multiply(a, a, mod)
n >>= 1
return res
def matrix_multiply(a, b, mod):
c = [[0, 0], [0, 0]]
for i in range(2):
for j in range(2):
for k in range(2):
c[i][j] = (c[i][j] + a[i][k] * b[k][j]) % mod
return c
def fib(n, mod):
if n == 1 or n == 2:
return 1
a = [[1, 1], [1, 0]]
res = matrix_pow(a, n - 2, mod)
return (res[0][0] + res[0][1]) % mod
n, m = map(int, input().split())
print(fib(n, m))
```
其中,`matrix_pow`函数用于计算矩阵的n次方,`matrix_multiply`函数用于计算两个矩阵的乘积,`fib`函数用于计算斐波那契数列的第n项,最后输出`fib(n, m)`即可得到斐波那契数列的第n项对m取模的结果。
阅读全文