设为首页 加入收藏

TOP

poj 3070 Fibonacci (矩阵快速幂求斐波那契数列的第n项)
2015-07-20 17:56:18 来源: 作者: 【 】 浏览:6
Tags:poj 3070 Fibonacci 矩阵 快速 那契 数列

题意就是用矩阵乘法来求斐波那契数列的第n项的后四位数。如果后四位全为0,则输出0,否则

输出后四位去掉前导0,也。。。就。。。是。。。说。。。输出Fn%10000。


题目说的如此清楚。。我居然还在%和/来找后四位还判断是不是全为0还输出时判断是否为0然后

去掉前导0。o(?□?)o

还有矩阵快速幂的幂是0时要特判。


P.S:今天下午就想好今天学一下矩阵乘法方面的知识,这题是我的第一道正式接触矩阵乘法的题,欧耶!大笑


#include
  
   
#include
   
     #include
    
      #define maxn 5 using namespace std; const int mod = 10000; int n,q; struct Mat { int mp[maxn][maxn]; bool operator = (Mat a) { for(int i=0;i
     
      mod) c.mp[i][j]-=mod; } } } return c; } Mat operator ^(Mat a,int k) { Mat c; for(int i=0;i
      
       >=1; } return c; } int main() { while(scanf("%d",&q)!=EOF) { if(q == -1) break; Mat x; x.mp[0][0] = 0; x.mp[0][1] = 1; x.mp[1][0] = 1; x.mp[1][1] = 1; Mat y; y.mp[0][0] = 0; y.mp[1][0] = 1; Mat z; n = 2; if(!q) { printf("0\n"); continue; } z = x^(q-1); Mat tmp = z*y; printf("%d\n",tmp.mp[1][0]%10000); } return 0; } 
      
     
    
   
  


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇uva 11762 - Race to 1(马尔可夫) 下一篇UVA - 11986 Save from Radiation

评论

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