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 }


  • 相关阅读:
    Windows服务的快速搭建与调试(C#图解)
    HttpWebRequest采集读取网站挂载Cookie的通用方法
    javascript数字格式化通用类——accounting.js使用
    entity framework框架生成摘要文档为空(没有元数据文档可用)的bug解决方案
    Jquery取得iframe中元素的几种方法Javascript Jquery获取Iframe的元素、内容或者ID,反之也行!
    常用Sql整理笔记
    字符串循环移位
    C++ STL体系结构、 编程方法及存在的问题
    二维数组的分配以及数组指针数组
    C++构造函数详解及显式调用构造函数
  • 原文地址:https://www.cnblogs.com/aituming/p/4452261.html
Copyright © 2011-2022 走看看