zoukankan      html  css  js  c++  java
  • 洛谷 P1962 斐波那契数列

    P1962 斐波那契数列

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define LL long long
     4 LL a[2][2],b[2][2],c[2][2],p;
     5 #define mod 1000000007
     6 
     7 void mi(LL x[2][2],LL y[2][2])
     8 {
     9     memset(c,0,sizeof(c));
    10     for(int i=0;i<=1;i++)
    11         for(int j=0;j<=1;j++)
    12             for(int k=0;k<=1;k++)
    13                 c[i][j]+=x[i][k]*y[k][j],c[i][j]%=mod;
    14     for(int i=0;i<=1;i++)
    15         for(int j=0;j<=1;j++)
    16             x[i][j]=c[i][j];
    17 }
    18 int main()
    19 {
    20     scanf("%lld",&p);
    21     if(p==1||p==2){ printf("1
    "); return 0;}
    22     a[0][0]=a[1][0]=a[0][1]=1;
    23     b[0][0]=b[1][0]=b[0][1]=1;
    24     p-=2;
    25     while(p)
    26     {
    27         if(p&1) mi(a,b);
    28         p>>=1; mi(b,b);
    29     }
    30     printf("%lld
    ",a[0][0]);
    31     return 0;
    32 }
    View Code
  • 相关阅读:
    软件总结
    今日总结
    今日总结
    今日总结
    今日总结
    今日总结
    今日总结
    3.22
    3.21
    3.20
  • 原文地址:https://www.cnblogs.com/chen74123/p/7511288.html
Copyright © 2011-2022 走看看