zoukankan      html  css  js  c++  java
  • POJ 3070 矩阵快速幂

    题目大意:求斐波那契数列数列的第n项的后四位,如果有前导0就不输出0

    (斐波那契的另一个公式)

    矩阵快速幂求斐波那契数列

     1 #include <cstdio>
     2 #include <cstring>
     3 const int mod=10000;
     4 struct matrix
     5 {
     6     int m[2][2];
     7 };
     8 
     9 matrix mul(matrix a,matrix b)
    10 {
    11     matrix tmp;
    12     memset(tmp.m,0,sizeof(tmp.m));
    13     for(int i=0;i<2;i++)
    14         for(int j=0;j<2;j++)
    15         {
    16             for(int k=0;k<2;k++)
    17                 tmp.m[i][j]=tmp.m[i][j]+a.m[i][k]*b.m[k][j]%mod;
    18             tmp.m[i][j]%=mod;
    19         }
    20     return tmp;
    21 }
    22 
    23 int cal(int n)
    24 {
    25     matrix a,b;
    26     a.m[0][0]=a.m[1][1]=1;
    27     a.m[1][0]=a.m[0][1]=0;
    28     b.m[0][0]=b.m[0][1]=b.m[1][0]=1;
    29     b.m[1][1]=0;
    30     while(n>0)
    31     {
    32         if(n&1)
    33             a=mul(a,b);
    34         b=mul(b,b);
    35         n>>=1;
    36     }
    37     return a.m[0][1];
    38 }
    39 
    40 int main()
    41 {
    42     int n;
    43     while(scanf("%d",&n)&&n!=-1)
    44     {
    45         printf("%d
    ",cal(n));
    46     }
    47     return 0;
    48 }
  • 相关阅读:
    Jzoj4721 LCS
    Jzoj4721 LCS
    Bzoj3196 二逼平衡树
    Bzoj3196 二逼平衡树
    Jzoj4715 树上路径
    Jzoj4715 树上路径
    031下一个排列
    汉诺塔问题【递归】
    求全排列和组合问题
    030串联所有单词并匹配
  • 原文地址:https://www.cnblogs.com/ExcuseMe/p/5508627.html
Copyright © 2011-2022 走看看