第三十三章续:用1 x 2的多米诺骨牌填满M x N的矩形有多少种方案

2023-10-27

题目描述:

用1 x 2的多米诺骨牌填满M x N的矩形有多少种方案,M<=5,N<2^31,输出答案mod p的结果
     

矩阵乘法:

#include <iostream>     
#include <algorithm>
#include <functional>
using namespace std;    

#define SIZE (1<<m)
#define MAX_SIZE 32

class CMatrix
{
    public:
        long element[MAX_SIZE][MAX_SIZE];
        void setSize(int);
        void setModulo(int);
        CMatrix operator* (CMatrix);
        CMatrix power(int);
    private:
        int size;
        long modulo;
};

void CMatrix::setSize(int a)
{
    for (int i=0; i<a; i++)
        for (int j=0; j<a; j++)
            element[i][j]=0;
    size = a;
}

void CMatrix::setModulo(int a)
{
    modulo = a;
}

CMatrix CMatrix::operator* (CMatrix param)
{
    CMatrix product;
    product.setSize(size);
    product.setModulo(modulo);
    for (int i=0; i<size; i++)
        for (int j=0; j<size; j++)
            for (int k=0; k<size; k++)
            {
                product.element[i][j]+=element[i][k]*param.element[k][j];
                product.element[i][j]%=modulo;
            }

    return product;
}

CMatrix CMatrix::power(int exp)
{
    CMatrix tmp = (*this) * (*this);
    if (exp==1) return *this;
    else if (exp & 1) return tmp.power(exp/2) * (*this);
    else return tmp.power(exp/2);
}


int main()
{
    const int validSet[]={0,3,6,12,15,24,27,30};
    long n, m, p;
    CMatrix unit;
    
    n=1024;
	m=3;
	p=999999;

    unit.setSize(SIZE);
    for(int i=0; i<SIZE; i++)
        for(int j=0; j<SIZE; j++)
            if( ((~i)&j) == ((~i)&(SIZE-1)) )
            {
                bool isValid=false;
                for (int k=0; k<8; k++)isValid=isValid||(i&j)==validSet[k];
                unit.element[i][j]=isValid;
            }

    unit.setModulo(p);
    printf("%d", unit.power(n).element[SIZE-1][SIZE-1] );
    return 0;
}   



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第三十三章续:用1 x 2的多米诺骨牌填满M x N的矩形有多少种方案 的相关文章

  • UVALive 6258 Non-boring sequences

    Problem icpcarchive ecs baylor edu index php option com onlinejudge Itemid 8 page show problem problem 4269 vjudge net c
  • 《代码之道》勘误表(2008.12.31更新)

    页码 行号 2009年1月第1版译文 建议的修正 备注 III 3 事物的本源以及行事之道 玄之又玄的背后终是一个个自圆其说的预言 这确是任何组织发展趋势的终结所在 关于世界应该是什么样子或者事情应该怎样去做的神话 最后证明都是一个个自圆其
  • c——顺序结构

    顺序结构 1 赋值语句 2 数据的输出 3 数据的输入 4 复合语句与空语句 4 1 复合语句 4 2 空语句 5 程序实例 1 赋值语句 在赋值表达式的后面加上 分号 就构成了赋值语句 2 数据的输出 字符原样输出 指定宽度输出 如果长度
  • java静态程序PPT_java中的static

    学习本文你到底要学到什么 1 static在java中到底代表什么 为何要用它 2 static在java中怎么用 3 static有那些特点和使用的 局限 1 static在java中到底代表什么 为何要用它 static 静态 指定位置
  • Linux下创建进程简介

    在博文https blog csdn net fengbingchun article details 108940548中简单介绍了Windows下通过函数CreateProcess创建进程的过程 这里简单介绍下Linux下通过fork函
  • 目标检测(Object Detection)原理与实现(五)

    基于Cascade分类器的目标检测 从今天开始进入基于机器学习的目标检测 前几节虽然也接触了一些机器学习的方法 但它主要是做辅助工作 机器学习的方法和非机器学习的方法结合在一起使用 说到这想起来前几天看到一位博士师兄发的笑话 说的是百度实验
  • 算法练习-NOJ-1005-装载问题

    时限 1000ms 内存限制 10000K 总时限 3000ms 描述 有两艘船 载重量分别是c1 c2 n个集装箱 重量是wi i 1 n 且所有集装箱的总重量不超过c1 c2 确定是否有可能将所有集装箱全部装入两艘船 输入 多个测例 每
  • outlook搜索栏跑到上面去了_工具方法

    我想这点文字主要对于研究生 或经常收发邮件的人比较有意义 可以帮助您 不会错过重要人物的信件 不会错过重要的日程安排 不会错过你关心领域的第一手资讯 如果你平时办公学习基本不使用邮件 那这篇文字对你没什么作用 就不用浪费时间阅读 当然 你也
  • Singleton单例模式-【懒汉式-加双重校验锁&防止指令重排序的懒汉式】实现方案中为什么需要加volatile关键字

    前提知识点 volatile可以保证可见性 防止指令重排序 synchronized可以保证可见性 防止指令重排序 原子性 也即是说volatile是synchronized的功能子集 我们知道在 懒汉式 加双重校验锁 的单例模式实现中已经
  • SSM项目打包到本地MAVEN仓库

  • redis哨兵模式原理

    阅读目录 redis哨兵模式架构 哨兵模式工作原理 哨兵如何判断master宕机 故障转移过程 主节点写压力过大 集群脑裂 主从数据不一致 总结 概述 为了实现redis集群的高可用 redis经历了好几次迭代 从最开始的主从模式 到哨兵模
  • 服务器发送了一个意外的数据包。received:3,expected:20“问题的解决方法

    XShell连接ssh服务器时提示这个 同事的没有问题 经过比对 我的是xshell5 0版本 同事的是6 0版本 升级xshell解决问题
  • C++友元函数,友元类

    友元函数 友元函数是在C 中用来访问另一个类的私有成员的一种机制 通过将函数声明为友元函数 可以使该函数能够访问类中的私有成员 即使它不是类的成员函数或者成员 在类的声明中声明友元函数 将友元函数的原型放在类的声明中 并在函数原型前加上fr
  • 静态代理

    一 静态代理概念 代理模式 目标对象类型的变量指向代理对象 然后调用方法的时候会执行代理对象的方法 代理对象的方法里面重写或者调用了目标对象的方法 并且在方法执行前后添加了一些功能 静态代理 写好对应的代理类源文件 在编译期就已经确定了目标
  • 微搭低代码学习之数据收集

    低代码和开发之间的关系 低代码平台是一种快速构建应用程序的工具 旨在提高开发效率 它们提供了一种基于图形用户界面的方式来创建应用程序 而无需编写大量的代码 使用低代码平台 开发人员可以更快速地构建和交付应用程序 从而缩短开发周期 然而 低代
  • 反向读取文件的每一行

    反向读取文件的每一行 作者 大矩阵作坊 加入时间 2004 02 19 浏览次数 100 有的初学者可能会尝试写一些文本数据的程序 并把每一条记录存为一行 如留言本 写入数据时 可能会把新添加的数据加入文件未尾 但是读文件并输出时 会发现也
  • Python中常用内置函数学习

    Python中的各个函数集合 时刻补充中 一 range函数 函数原型 range start end scan 参数含义 start 计数从start开始 默认是从0开始 例如range 5 等价于range 0 5 end 计数到end
  • 解决element-ui/element-plus中el-pagination分页组件显示英文

    解决element ui element plus中el pagination分页组件显示英文 解决方法 在main js或main ts中引入中文语言 import locale from element plus lib locale
  • Mybatis-Plus复杂语句多级嵌套分组带分页查询

    如 SELECT dbname FROM SELECT CONCAT db type table name as dbname FROM mdn table permission WHERE db type MYSQL ORDER BY c

随机推荐

  • 使用nginx搭建helm私有仓库

    使用nginx 起一个helm的http服务 root master1 docker run d name nginx p 81 80 v root charts usr share nginx html charts nginx 把本地的
  • Python--统计学检验

    1 导入相关库 import numpy as np import pandas as pd import matplotlib pyplot as plt from scipy import stats from scipy stats
  • python execute() 使用%s 拼接sql 避免sql注入攻击 好于.format

    1 execute 参数一 sql 语句 锁定当前查询结果行 cursor execute SELECT high low vol FROM table name WHERE symbol s FOR UPDATE symbol 2 for
  • 互联网程序员行话(黑话)合集

    一 招聘行话大全 能听懂证明你是历经磨难的老司机 刚开始投简历时 你总以为是这样的 其实大部分情况下是那样的 面试之后 HR让回去等消息 傻傻的等待 半个月以上没有回音 各种焦虑 明面上的意思就是实际意思的公司 貌似都是说的是别人的公司 下
  • 安全多方计算从入门到精通:MPC简介&JUGO平台

    简介 今天我们来介绍一下基于安全多方计算所设计出来的产品JUGO 从安全性角度来看 数据泄露 隐私安全问题严重 facebook的数据泄露事件闹得很大 原因就是facebook单方面将用户的个人数据提供给了第三方机构 这为个人数据的拥有权敲
  • Intel MediaSDK sample_decode 官方GPU解码流程学习(二) - 在双显卡机器上实现DirectX11 D3D11和OpenCL共享资源

    很久以前写过有关D3D11和OCL直接共享显存的代码 Intel MediaSDK sample decode 官方GPU解码流程学习 DirectX11 D3D11和OpenCL共享资源 这段代码一直运行的很好 被我用来做验证显卡驱动里的
  • [DB]数据库--lowdb

    DB 数据库 lowdb lowdb 基本应用 获取数据 数据变更 写入文件 lodash的使用 获取数据 lodash方法使用 数据变更 写入文件 lowdb lowdb 是一个基于文件存储的非关系型数据库 基于loadsh的轻量级数据库
  • Quaternion 学习与应用(转载)

    Quaternion 学习与应用 标签 四元数 unity3d quaternion 分类 Unity3D 今天准备学习和研究下unity3d的四元数 Quaternion 四元数在电脑图形学中用于表示物体的旋转 在unity中由x y z
  • 个人博客站点的搭建过程

    个人博客站点的搭建过程 技术选型 hexo vercel hexo介绍 官网 Hexo Hexo 是一个快速 简洁且高效的博客框架 Hexo 使用 Markdown 或其他渲染引擎 解析文章 在几秒内 即可利用靓丽的主题生成静态网页 ver
  • 【华为OD机试真题2023B卷 JAVA&JS】找最小数

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 找最小数 知识点贪心 时间限制 1s 空间限制 32MB 限定语言 不限 题目描述 给一个正整数NUM1 计算出新正整数NUM2 NUM2为NUM1中移除N位数字后的结果 需要使得NU
  • Qt自定义控件的实践——电池电量控件

    一 介绍 上一篇我们绘制了一个自定义的slider控件 现在我们再绘制一个电池控件 它可调节电池电量 二 步骤 新建Battery类 battery h ifndef BATTERY H define BATTERY H 1 可设置电池电量
  • 操作系统---第三章内存管理---虚拟内存管理---应用题

    1 2009年统考真题 我在这里犯的错误是没有考虑到执行完缺页中断后还要优先访问快表 快表找不到才去访问内存 2在一个请求分页存储管理系统中 一个作业的页面走向为4 3 2 1 4 3 5 4 3 2 1 5 当分配给作业的物理块数分别为3
  • VMware安装和新建linux虚拟机

    目录 VMware虚拟机安装以及Linux系统安装及环境配置 1 安装前配置 2 VMware虚拟机的安装 VMware workstation 16 3 新建虚拟机 4 安装操作系统 5 配置远程管理 VMware虚拟机安装以及Linux
  • ant 通配符

    我们常用的匹配模式有ANT模式 比如acegi可以用PATTERN TYPE APACHE ANT来使用ANT匹配模式 那什么是ANT匹配模式呢 ANT通配符有三种 通配符 说明 匹配任何单字符 匹配0或者任意数量的字符 匹配0或者更多的目
  • Android性能优化(一)之启动加速35%

    一 前言 随着项目版本的迭代 App的性能问题会逐渐暴露出来 而好的用户体验与性能表现紧密相关 从本篇文章开始 我将开启一个Android应用性能优化的专题 从理论到实战 从入门到深挖 手把手将性能优化实践到项目中 欢迎持续关注 那么第一篇
  • OpenGL(十)——基础光照

    目录 一 前言 二 环境光照 三 漫反射光照 3 1 法向量 3 2顶点着色器 3 3 VAO属性解释 3 4 片段着色器 四 镜面光照 4 1 片段着色器 一 前言 现实世界光照十分复杂 冯氏光照模型是对现实世界光照的抽象 主要由3部分组
  • CSAPP-数据表示与运算实验

    目录 一 实验目的 二 实验要求及注意事项 三 实验原理与内容 1 位操作 2 补码运算 3 浮点数操作 四 实验设备与软件环境 五 实验过程与结果 1 操作符及运算概览 1 位运算和逻辑运算 2 补码运算 3 浮点数 2 功能实现与结论
  • DB2的日期时间类型以及转换问题

    一 首先说一下日期时间类型的简介 日期时间型数据类型包括 DATE TIME 和 TIMESTAMP 日期时间值可在某些算术和字符串操作中使用 而且兼容某些字符串 但它们既不是字符串 也不是数字 DATE DATE 是一个由三部分组成的值
  • 【第47篇】BoT-SORT:强大的关联多行人跟踪

    摘要 论文连接 https arxiv org pdf 2206 14651 pdf 多对象跟踪 MOT 的目标是检测和跟踪场景中的所有对象 同时为每个对象保留一个唯一标识符 在本文中 我们提出了一种新的鲁棒的最先进的跟踪器 它可以结合运动
  • 第三十三章续:用1 x 2的多米诺骨牌填满M x N的矩形有多少种方案

    题目描述 用1 x 2的多米诺骨牌填满M x N的矩形有多少种方案 M lt 5 N lt 2 31 输出答案mod p的结果 矩阵乘法 include