斐波那契(矩阵乘法&&快速幂)

对于大范围的斐波那契数列求解,传统递推方法时间复杂度过高。本文采用矩阵乘法和快速幂优化算法,通过递推矩阵快速计算Fibonacci数列的模10000值。输入包含多个测试用例,当n=-1时结束。输出每个测试用例对应的斐波那契数结果。
摘要由CSDN通过智能技术生成

在斐波那契数列中,Fib0=0,Fib1=1,Fibn=Fibn−1+Fibn−2(n>1)Fib0=0,Fib1=1,Fibn=Fibn−1+Fibn−2(n>1)。

给定整数n,求Fibnmod10000Fibnmod10000。

输入格式

输入包含多组测试用例。

每个测试用例占一行,包含一个整数n。

当输入用例n=-1时,表示输入终止,且该用例无需处理。

输出格式

每个测试用例输出一个整数表示结果。

每个结果占一行。

数据范围

0≤n≤2∗109

输入样例:

0
9
999999999
1000000000
-1

输出样例:

0
34
626
6875

 思路:由于n的范围达到了1e9,所以就算递推o(n)的做法也无法满足时间的要求,所以这里用到了矩阵乘法,就是把这种递推的运算用一个递推矩阵参与的矩阵乘法模拟,因为矩阵可以一次存储多个数字,所以极大的减少了计算的状态,简单地说,这里就是用一个矩阵a[2][2]初始等于={ {0,1},{1,1}},a就是递推矩阵,让f[2]={0,1},(fib数列的前两个数),所以f[0]=fib(n),f[1]=fib(n+1),让f右乘一个a后,相当于:

f[0]&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值