zoukankan      html  css  js  c++  java
  • hihocoder #1143 : 骨牌覆盖问题·一

    http://hihocoder.com/problemset/problem/1143 
    
    斐波那契数列,快速矩阵幂解法
    
    #include <cstdio>
    #include <cstring>
    #include <vector>
    
    using namespace std;
    const int N = 19999997;
    
    void copy(long long a[2][2],long long b[2][2])
    {
        for(int i = 0; i < 2; i++)
            for(int j = 0; j < 2; j++)
                a[i][j] = b[i][j];
    
    }
    
    void calc(long long a[2][2],long long b[2][2])
    {
        long long c[2][2]={0};
        c[0][0] = (a[0][0]*b[0][0]+a[0][1]*b[1][0])%N;
        c[0][1] = (a[0][0]*b[0][1]+a[0][1]*b[1][1])%N;
        c[1][0] = (a[1][0]*b[0][0]+a[1][1]*b[1][0])%N;
        c[1][1] = (a[1][0]*b[0][1]+a[1][1]*b[1][1])%N;
        copy(a,c);
    }
    
    int main()
    {
        int n;
        while(scanf("%d",&n)!=EOF)
        {
            long long c[2][2]={0,1,1,1};
            long long res[2] = {1,1};
            int flag = 0;
            for(int k = 0; (1<<k) <= n;k++)
            {
                if(n & (1<<k))
                {
                    long long u = (res[0]*c[0][0]+res[1]*c[0][1])%N;
                    long long v = (res[0]*c[1][0]+res[1]*c[1][1])%N;
                    res[0] = u;
                    res[1] = v;
                }
                calc(c,c);
            }
            printf("%lld
    ",res[0]);
        }
        return 0;
    }
    
     
  • 相关阅读:
    MyEclipse 2016CI破解版for Mac
    关于Mac系统中my sql 和navicat for mysql 的连接问题。
    二分总结
    递推总结
    区间DP学习笔记 6/20
    搜索考试
    模板整理
    防线 2020/3/31
    JS 循环遍历JSON数据
    pm am 12小时格式化
  • 原文地址:https://www.cnblogs.com/zendu/p/4981011.html
Copyright © 2011-2022 走看看