矩阵乘法快速幂

本文讲述了员工小C在解决一道关于数列问题时遇到的挑战,如何借助矩阵快速幂的知识解决斐波那契类递推公式。通过矩阵乘法优化算法,小C揭示了从常规方法到高效解决方案的转变过程。

今天员工小c写题的时候遇到了在第四黑厂时期就没填的坑,今日再次见面,自然是无奈,但是他请教了他的好朋友枫系,原来需要矩阵乘法快速幂的知识。

Number Sequence
时间限制: 1 Sec  内存限制: 256 MB
题目描述
此题HDUOJ数据过水,网上题解中直接将n%49的做法是错误的。
A number sequence is defined as follows:

f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.

Given A, B, and n, you are to calculate the value of f(n).

输入
The input consists of multiple test cases. Each test case contains 3 integers A, B and n on a single line (1 <= A, B <= 1000, 1 <= n <= 100,000,000). Three zeros signal the end of input and this test case is not to be processed.

输出
For each test case, print the value of f(n) on a single line.

样例输入
1 1 3
1 2 10
0 0 0

样例输出
2
5

这就是小c遇到的题目,小c最早找规律半天也没找出来,就去问度娘,结果度娘所有答案都是%49,小C一看,稳了,马上又A一题。(第n次不读题,题上说了%49错的) Ctrl C+Ctrl V = WA。非常尴尬。

然后小c没办法呀,只能请教他的新朋友枫系,枫系二话不说,就很仗义地把自己的代码展示给了小C,小C一看两看三看四看都看不明白,后来才知道这是矩阵乘法快速幂,可惜网上的博客并没有教会小C,于是小C只能再次求助枫系。

原来矩阵乘法快速幂需要线性代数的知识,还好小C也是个带学生。这题看似是斐波那契递推的升级版,实则应该采用矩阵的方法优化。

评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值