关于矩阵N次方的一个比较快速算法

本文介绍了一种利用矩阵快速求解斐波那契数列的方法,通过将时间复杂度降低到O(lg n),解决了编程题中要求在5000ms内计算的问题。作者通过二进制表示法设计了数据结构,实现了高效的矩阵运算。提供的源代码能在3ms内完成测试,但有些大神甚至能用2ms完成,展现了算法优化的魅力。
摘要由CSDN通过智能技术生成

昨天晚上看到了一道求解斐波那契数的编程题,里边介绍了通过矩阵来计算的办法。现将题摘录如下

Fibonacci数列是满足如下条件的整数数列:

F0 = 0

F1 = 1

FN = FN-1+FN-2 (N≥2)

Fibonacci数列的前10项如下:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …

另一个求解Fibonacci数列的公式是:


 


对于任意给定的整数N,请求出FN模10000的余数。 

输入
输入包含多组测试数据。

每组数据占一行,仅包含一个整数n(0≤n≤1,000,000,000)最后一行为整数-1代表输入结束,不需要做处理。

输出
对于每组测试数据,输出FN模10000的余数。


由于最近考研复习矩阵,所以看到了这个就眼前一辆,马上就想到了对角化等比较深奥的东西,,不过这里顺便引用我比较喜欢的一句话

Before you attain it, it is something
wonderful, but after you attain it, it is nothing special.

我觉得我现在已经到了nothing special的境界了。


言归正传,这题的思路想必大家都会,但是要将时间限制在5000ms估计就不是每个人都会的了。如何求一个矩阵的N次方呢,如果一个乘一个的话,很明显复杂度达到了

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值