设为首页 加入收藏

TOP

hdu 1588 Gauss Fibonacci(矩阵嵌矩阵)
2015-11-21 01:57:26 来源: 作者: 【 】 浏览:4
Tags:hdu 1588 Gauss Fibonacci 矩阵
题目大意:

求出斐波那契中的 第 k*i+b 项的和。


思路分析:

定义斐波那契数列的矩阵

f(n)为斐波那契第n项

F(n) = f(n+1)

f(n)


那么可以知道矩阵

A = 1 1

1 0

使得 F(n) = A * F(n+1)


然后我们化简最后的答案

sum = F(b) + F(K+b) + F (2*k +b)....

sum = F(b) + A^k F(b) + A^2k F(b).....

sum = (E+A^k + A^2k.....)*F(b)

那么我们把 矩阵 A^k 定义为矩阵 K。

再递推上面的求和公式。

E E * SUM = SUM + E

0 K E K


所以构造一个内嵌矩阵的矩阵。

然后求出和乘以F(b)即可。


#include 
  
   
#include 
   
     #include 
    
      #include 
     
       #define N 2 using namespace std; typedef long long LL; LL mod; struct matrix { LL data[N][N]; friend matrix operator * (const matrix A,const matrix B) { matrix res; memset(res.data,0,sizeof res.data); for(int i=0;i
      
       >=1; origin=origin*origin; } return res; } supermax Do(supermax origin,LL n) { supermax res; for(int i=0;i
       
        >=1; origin=origin*origin; } return res; } int main() { memset(zero.data,0,sizeof zero.data); memset(E.data,0,sizeof E.data); for(int i=0;i
        
         

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇uva 10831 - Gerg's Cake(勒.. 下一篇UVA 10205 Problem E: Stack '..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: