hiho #1151 : 骨牌覆盖问题·二 (递推,数论)
2024-09-25 22:47:52
#1151 : 骨牌覆盖问题·二
时间限制:10000ms
单点时限:1000ms
内存限制:256MB
描述
上一周我们研究了2xN的骨牌问题,这一周我们不妨加大一下难度,研究一下3xN的骨牌问题?
所以我们的题目是:对于3xN的棋盘,使用1x2的骨牌去覆盖一共有多少种不同的覆盖方法呢?
首先我们可以肯定,奇数长度一定是没有办法覆盖的;对于偶数长度,比如2,4,我们有下面几种覆盖方式:
输入
第1行:1个整数N。表示棋盘长度。1≤N≤100,000,000
输出
第1行:1个整数,表示覆盖方案数 MOD 12357
- 样例输入
-
62247088
- 样例输出
-
4037
思路:
当N为基数的时候,肯定覆盖不了。
当N为偶数的时候,对N做除2操作,找出递推公式。
a[0] = 1;
a[1] = 3;
a[2] = 11;
递推公式为:
f(n)=3(f(n-1)+f(n-2))-f(n-3);
AC代码:
#include <iostream>
#include <algorithm>
#define mod 12357
using namespace std; //
int solve(long long n)
{
n = n / ;
int a[],t=;
a[] = ;
a[] = ;
a[] = ; if (n < )
return a[n]; for (int i = ; i <= n; i++)
{
t = (*a[] + *a[]-a[]+mod)%mod;
a[] = a[];
a[] = a[];
a[] = t;
}
return t;
} int main()
{
long long n;
while (cin >> n) {
if (n & )
cout << << endl;
else
cout << solve(n) << endl;
} system("pause");
return ;
}
需要注意的是,有一个取余操作。
t = (3*a[2] + 3*a[1]-a[0]+mod)%mod; 括号内的数需要加上一个Mod,不然可能为负。
最新文章
- ReactNative入门 —— 动画篇(上)
- mysql支持跨表delete删除多表记录
- Leetcode: Largest BST Subtree
- android和ios,音频互通方案
- 通过FTP连接Azure上的网站
- java <;? super Fruit>;与<;? extends Fruit>;
- hdu 1023 Train Problem II
- 可变长参数列表误区与陷阱——va_arg不可接受的类型
- jquery 源码分析
- __declspec(dllimport)的作用
- Android 模块化编程之引用本地的aar
- svnkit添加节点
- RobotFramework自动化测试框架-移动手机自动化测试AppiumLibrary库其它的常见自动化关键字
- 函数PYXX_READ_PAYROLL_RESULT的dump问题
- MySQL 参数- Innodb_File_Per_Table(独立表空间)
- JeeSite中Excel导入导出
- JPA(Hibernate)
- [Synthetic-data-with-text-and-image]
- Vue+element组合el-table-column表头宽度自定义
- HSSF与XSSF导出excel文档
热门文章
- 访问cv::Mat中的数据时遇到的指针类型问题
- ES6标准
- 安装php时的配置选项
- Sublime Text 3065
- [ngRepeat:dupes] Duplicates in a repeater are not allowed. Use &#39;track by&#39; expression to specify uniq
- 平均值mean,众数mode,中值median 和 标准差stddev
- mysql中Can&#39;t connect to MySQL server on &#39;localhost&#39; (10061)
- maven可选依赖(Optional Dependencies)和依赖排除(Dependency Exclusions)
- C-函数与内存剖析
- CF449C Jzzhu and Apples (筛素数 数论?