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

    原问题:骨牌覆盖问题
    时间限制:10000ms
    单点时限:1000ms
    内存限制:256MB

    描述

    骨牌,一种古老的玩具。今天我们要研究的是骨牌的覆盖问题:
    我们有一个2xN的长条形棋盘,然后用1x2的骨牌去覆盖整个棋盘。对于这个棋盘,一共有多少种不同的覆盖方法呢?
    举个例子,对于长度为1到3的棋盘,我们有下面几种覆盖方式:

    提示:骨牌覆盖

    提示:如何快速计算结果

    输入

    第1行:1个整数N。表示棋盘长度。1≤N≤100,000,000

    输出

    第1行:1个整数,表示覆盖方案数 MOD 19999997

    样例输入
    62247088
    样例输出
    17748018








     1 #include <iostream>
     2 
     3 using namespace std;
     4 
     5 typedef long long ll;
     6 
     7 const int M = 19999997;
     8 struct Matrix
     9 {
    10     int m[2][2];
    11     Matrix operator*(Matrix& a)
    12     {
    13         Matrix res;
    14         res.m[0][0] = ((ll)m[0][0]*a.m[0][0]+(ll)m[0][1]*a.m[1][0])%M;  // (ll)防止数据溢出
    15         res.m[0][1] = ((ll)m[0][0]*a.m[0][1]+(ll)m[0][1]*a.m[1][1])%M;
    16         res.m[1][0] = ((ll)m[1][0]*a.m[0][0]+(ll)m[1][1]*a.m[1][0])%M;
    17         res.m[1][1] = ((ll)m[1][0]*a.m[0][1]+(ll)m[1][1]*a.m[1][1])%M;
    18         return res;
    19     }
    20 };
    21 
    22 
    23 Matrix pow(Matrix m, int n)
    24 {
    25     Matrix res;
    26     if(1==n)
    27         return m;
    28     res = pow(m, n/2);
    29     if(n%2==1)
    30         res = res*res*m;
    31     else
    32         res = res*res;
    33     return res;
    34 }
    35 
    36 
    37 int main()
    38 {
    39     int N;
    40     cin>>N;
    41 
    42     Matrix mat;
    43     mat.m[0][0]=0;
    44     mat.m[0][1]=1;
    45     mat.m[1][0]=1;
    46     mat.m[1][1]=1;
    47     mat = pow(mat, N);
    48 
    49     cout<<mat.m[1][1];
    50 
    51     return 0;
    52 }


  • 相关阅读:
    1.3.6 详解build.gradle文件——Android第一行代码(第二版)笔记
    1.3.5 详解项目中的资源——Android第一行代码(第二版)笔记
    1.3.4分析你的第一个Android程序——Android第一行代码(第二版)笔记
    1.3创建你的第一个Android项目——Android第一行代码(第二版)笔记
    1.2搭建开发环境——Android第一行代码(第二版)笔记
    1.1.3 Android应用开发特色——Android第一行代码(第二版)笔记
    函数与方法的区别
    你真的知道敏捷到底是什么吗?
    某个应用的CPU使用率居然达到100%,我该怎么办?
    异常 lock buffer failed for format 0x23
  • 原文地址:https://www.cnblogs.com/aituming/p/4452261.html
Copyright © 2011-2022 走看看