• poj 3070 Fibonacci


    http://poj.org/problem?id=3070

    矩阵的快速幂,二分

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>
     4 #define maxn 10000
     5 using namespace std;
     6 const int mod=10000;
     7 
     8 int n;
     9 struct node
    10 {
    11     int a[4][4];
    12 };
    13 
    14 node multi(node s,node t)
    15 {
    16     node c;
    17     for(int i=0; i<2; i++)
    18     {
    19         for(int j=0; j<2; j++)
    20         {
    21             c.a[i][j]=0;
    22             for(int k=0; k<2; k++)
    23             {
    24                 c.a[i][j]=(c.a[i][j]+s.a[i][k]*t.a[k][j])%mod;
    25             }
    26         }
    27     }
    28     return c;
    29 }
    30 
    31 
    32 int main()
    33 {
    34     while(scanf("%d",&n)!=EOF)
    35     {
    36         if(n==-1) break;
    37         node m,x;
    38         m.a[0][0]=1; m.a[0][1]=0;
    39         m.a[1][0]=0; m.a[1][1]=1;
    40         x.a[0][0]=x.a[0][1]=x.a[1][0]=1;
    41         x.a[1][1]=0;;
    42         while(n)
    43         {
    44             if(n&1)
    45             {
    46                 m=multi(m,x);
    47             }
    48             x=multi(x,x);
    49             n>>=1;
    50         }
    51         printf("%d
    ",m.a[0][1]);
    52     }
    53     return 0;
    54 }
    View Code
  • 相关阅读:
    Elasticsearch 缓存总结
    ElasticSearch-集群
    HTTP协议详解
    HTTPS总结
    ElasticSearch--Document
    正排索引和倒排索引
    线上OOM排查步骤总结
    线程池-四种拒绝策略总结
    netty篇-练手
    netty篇-UDP广播
  • 原文地址:https://www.cnblogs.com/fanminghui/p/3764344.html
Copyright © 2020-2023  润新知