斐波那契数列谈矩阵(2)

来源:互联网 发布:my sql count 限制条件 编辑:程序博客网 时间:2024/04/29 04:44

斐波那契数列的原理:

f(n) 是第n项的值;

f(1) = 1; f(2) = 1;

f(n) = f(n-1) + f(n-2);



故需求解那个2x2的矩阵即可,需用到二分法;


选择二分法用递归求解:

#define N 2using namespace std;struct matrix{int a[N][N];};matrix mul(matrix x,matrix y){matrix ans;ans.a[0][0] = x.a[0][0] * y.a[0][0] + x.a[0][1] * y.a[1][0];ans.a[0][1] = x.a[0][0] * y.a[0][1] + x.a[0][1] * y.a[1][1];ans.a[1][0] = x.a[1][0] * y.a[0][0] + x.a[1][1] * y.a[1][0];ans.a[1][1] = x.a[1][0] * y.a[0][1] + x.a[1][1] * y.a[1][1];x = ans;return x;}matrix power(matrix x, long e){matrix ans,tmp;if(e == 0){ans.a[0][0] = 1;ans.a[0][1] = 0;ans.a[1][0] = 0;ans.a[1][1] = 1;return ans;}if(e == 1)   return x;tmp = power(x,e >>1);ans = mul(tmp,tmp);if(e & 1)  ans = mul(ans,x);return ans;}


0 0
原创粉丝点击