首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C语言 斐波那切数列 每行输出F(n)%m解决方案

2012-09-29 
C语言 斐波那切数列 每行输出F(n)%m这个是最正宗的斐波那切数列.F(0) 0, F(1) 1, F(n) F(n-1) + F(n

C语言 斐波那切数列 每行输出F(n)%m
这个是最正宗的斐波那切数列.F(0) = 0, F(1) = 1, F(n) = F(n-1) + F(n-2) (n>=2) 

每行输入一个数n和m(n <= 2*10^9 ,m < 10^4) 

每行输出F(n)%m. 

Sample Input
1 3
2 4
3 5
4 6

Sample Output
1
1
2
3

有什么简单的C语言方法去做吗

[解决办法]
循环就行了。
[解决办法]
n <= 2*10^9。需要用矩阵乘法。[1,1;1,0]*[F[n];F[n-1]]=[F[n+1];F[n]]。所以如果令A矩阵是[1,1;1,0],则[F[n];F[n-1]]=A^(n-1)*[1;0]。用log(n)的复杂度算出A^(n-1)以后F[n]就出来了。当然所有运算都是mod m进行。

热点排行