poj2506-Tiling(规律,大数)

poj2506(递推+高精度) 题目链接:http://poj.org/problem?id=2506 题目大意:给出一个n,代表一个2*n的矩形地板,要求只用2*1和2*2两种瓷砖将其完全覆盖,求所有情况的数量 解题思路;求出递推公式:f(n)=2*f(n-2)+2*f(n-1),这道题还有另外一个关键点是高精度,因为题目提到n可能会达到250,因此答案的数字将会非常大,long long型照样会爆掉,因此采用数组模拟 阅读详情
Tiling
Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 8300 Accepted: 4002

Description

In how many ways can you tile a 2xn rectangle by 2x1 or 2x2 tiles? 
Here is a sample tiling of a 2x17 rectangle. 

Input

Input is a sequence of lines, each line containing an integer number 0 <= n <= 250.

Output

For each line of input, output one integer number in a separate line giving the number of possible tilings of a 2xn rectangle. 

Sample Input

2
8
12
100
200

Sample Output

3
171
2731
845100400152152934331135470251
1071292029505993517027974728227441735014801995855195223534251

这题主要是找寻规律,剩下的就是大数了!

我们假设要找2*n的种数:

2*(n-1)的已经拼好了,2*(n-2)也已经拼好了

我们可以知道,第n块只与n-1和n-1块有关系

第n-1块变成第n块只有一种方法

第n-2块变成第n块有三种方法,但是有一种和上边的那一种重复了

所以an=2*a(n-2)+a(n-1);



找出规律后代码也是可以优化的


未优化的 47ms:


#include<cstdio>
#include<cstring>
using namespace std;
struct node
{
	int a[10000];
}s[300];
int main()
{
	int c,n,i,j;
	s[0].a[0]=1;
	s[1].a[0]=1;
	for(i=2;i<260;i++)
	{
		c=0;
		for(j=0;j<10000;j++)
		{
			s[i].a[j]=s[i-1].a[j]+2*s[i-2].a[j]+c;
			c=s[i].a[j]/10;
			s[i].a[j]%=10;
		}
	}
	while(scanf("%d",&n)!=EOF)
	{
		for(i=10000-1;s[n].a[i]==0;i--);
		for(j=i;j>=0;j--)
		printf("%d",s[n].a[j]);
		printf("\n");
	}
return 0;
}

稍加优化  16ms:


#include<cstdio>
#include<cstring>
using namespace std;
struct node
{
	int a[10000];
}s[300];
int main()
{
	int c,n,i,j,cot=1;
	s[0].a[0]=1;
	s[1].a[0]=1;
	for(i=2;i<260;i++)
	{
		c=0;
		for(j=0;j<cot;j++)
		{
			s[i].a[j]=s[i-1].a[j]+2*s[i-2].a[j]+c;
			c=s[i].a[j]/10;
			s[i].a[j]%=10;
		}
		while(c)
		{
			s[i].a[cot++]=c%10;
			c/=10;
		}
	}
	while(scanf("%d",&n)!=EOF)
	{
//		for(i=10000-1;s[n].a[i]==0;i--);
//		for(j=i;j>=0;j--)
//		printf("%d",s[n].a[j]);
//		printf("\n");
	for(i=cot-1;s[n].a[i]==0;i--);
	for(;i>=0;i--)
	printf("%d",s[n].a[i]);
	printf("\n");
	}
return 0;
}

优化后   0ms:



#include<cstdio>
#include<cstring>
using namespace std;
struct node
{
	int a[10000];
}s[300];
int main()
{
	int c,n,i,j,cot=1;
	long long temp;
	s[0].a[0]=1;
	s[1].a[0]=1;
	for(i=2;i<260;i++)
	{
		c=0;
		for(j=0;j<cot;j++)
		{
			temp=s[i-1].a[j]+2*s[i-2].a[j]+c;
			c=temp/100000;
			s[i].a[j]=temp%100000;
		}
		if(c>0)
		{
			s[i].a[cot++]=c;
		}
	}
	while(scanf("%d",&n)!=EOF)
	{
//		for(i=10000-1;s[n].a[i]==0;i--);
//		for(j=i;j>=0;j--)
//		printf("%d",s[n].a[j]);
//		printf("\n");
	for(i=cot-1;s[n].a[i]==0;i--);
	printf("%d",s[n].a[i]);
	for(i-=1;i>=0;i--)

	printf("%05d",s[n].a[i]);
	printf("\n");
	}
return 0;
} 




        
poj 2506 Tiling(大数+规律) poj2506Tiling 此题规律:A[0]=1;A[1]=1;A[2]=3;……A[n]=A[n-1]+2*A[n-2];用大数来写,AC代码:#include<stdio.h> #include<string.h> #define MAX 300 int num[MAX][MAX]; int main() { int n; while(scanf("% 阅读详情

相关推荐

python123题目——个税计算器

类型:简单分支。

m0_62488776的博客 5803

POJ——2506(找规律加大数乘法 )

题目链接:http://poj.org/problem?id=2506 源代码: #include using namespace std; int main() { int i,j; long long a[64];            //存储前63个 int b[200][255];            //存储后187个 int len[200];

luoshenzhisi 1931

AI驱动视频剪辑自动化:cutcli命令行工具重塑工作流

视频剪辑自动化是提升内容生产效率的关键技术,其核心原理在于通过程序化指令替代手动操作,将创意执行过程代码化。这项技术的价值在于能够将创作者从重复性劳动中解放,实现批量化、标准化的视频内容生产,尤其适用于社交媒体运营、产品宣传等高频产出场景。通过封装专业软件(如剪映/CapCut)的底层草稿格式,自动化工具在保证工业级渲染质量的同时,提供了可编辑的中间态,为AI智能体(Agent)与生产工具的结合提供了清晰接口。本文以cutcli为例,深入探讨了如何通过命令行工具和AI助手,构建从自然语言指令到可编辑视频草稿

weixin_27210125的博客 1060

POJ 2506 Tiling ( 递推 + 大数 )

题目链接:http://poj.org/problem?id=2506   这个题和校赛的

顺便A道题 791

HyperMesh二次开发实战:自动化Comp与材料属性批量绑定

本文详细介绍了HyperMesh二次开发中自动化Comp与材料属性批量绑定的实战技巧。通过TCL脚本实现批量创建属性卡、智能材料分配和异常处理,大幅提升前处理效率,适用于汽车、航空航天等领域的复杂模型处理。

weixin_29214691的博客 691

Quartus的Signal Tap II的使用技巧

Signal Tap II全称Signal Tap II Logic Analyzer,是第二代系统级调试工具,它集成在Quartus II软件中,可以捕获和显示实时信号,是一款功能强大、极具实用性的FPGA片上调试工具软件。传统的FPGA板级调试是由外接的逻辑分析仪连接到FPGA的控制引脚,将内部引号引出至引脚I/O上,接着进行板级调试。

qq_37624854的博客 5899

POJ2506——Tiling(高精度+递推)

Tiling Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10540   Accepted: 4906 Description In how many ways can you tile(铺以瓦) a 2xn rectangle by 2x1 or 2x2 ti

077CYW的博客 562

Joern实战:从代码导入到Python分析的全流程避坑指南(附常见错误解决方案)

本文详细介绍了Joern静态分析工具从代码导入到Python分析的全流程实践指南,包括环境配置、代码导入技巧、数据库服务优化、Python交互分析及性能调优等关键步骤。特别针对常见错误提供了实用解决方案,帮助开发者高效进行代码安全分析和漏洞挖掘。

weixin_28309571的博客 140

poj2506(大数+递推)

题目链接:LINK解题说明:ac代码:#include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;string&gt; using namespace std; const int MAXN=250; struct po{ int a[10000]; }s[MAXN+5]; int tot=1; void init(){ s[0].a...

zxker 1685

CS1237卡尔曼滤波实战:如何用24位ADC实现电子秤级精度?

本文详细介绍了如何利用CS1237 24位ADC芯片结合卡尔曼滤波算法实现电子秤级精度测量。通过解析CS1237硬件特性、卡尔曼滤波原理及STM32驱动优化,提供了一套完整的解决方案,包括多通道支持、驱动代码实现和性能调优技巧,适用于工业测量和嵌入式开发领域。

linux的博客 1087

海德汉机床采集数据

海德汉数控系统我一般在高端机床上见得比较多。有好多五轴加工精度比较高的机床都用的是海德汉的系统。市面上常见的有530和640等型号。海德汉的采集还是有点难度的,需要对SDK有深度的了解。

若云流风的专栏 1526

poj 2506 Tiling 大数 找规律 递推

Tiling Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9225   Accepted: 4385 Description In how many ways can you tile a 2xn rectangle by 2x1 or 2x2 tiles?  Here is a sa...

SYITwin的博客 466

华为OD机试双机位C卷-用户入网定期复评(C/C++/Py/Java/Js/Go)

华为OD机试(机考)双机位C卷 【用户入网定期复评】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【用户入网定期复评】。

qq_45776114的博客 834

POJ2506 Tiling(递推+大数)

Tiling Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9420   Accepted: 4482 Description In how many ways can you tile a 2xn rectangle by 2x1 or 2x2 tiles? 

sleep的博客 500

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

POJ 2506 Tiling(大数)

这是一道找规律的题目…… Tiling Time Limit:1000MS Memory Limit:65536K Total Submissions:11380 Accepted:5258 Description In how many ways can you tile a 2xn rectangle by 2x1 or 2x2 tiles...

OneLine_的博客 340

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

poj2506--Tiling

Tiling Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7288   Accepted: 3546 Description In how many ways can you tile a 2xn rectangle by 2x1 or 2x2 tiles? 

随风的专栏 1134

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

poj 2506 Tiling

Tiling Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8321   Accepted: 4014 Description In how many ways can you tile a 2xn rectangle by 2x1 or 2x2 tiles?

longge33445的博客 391

POJ 2506 Tiling

Tiling Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7679   Accepted: 3734 Description In how many ways can you tile a 2xn rectangle by 2x1 or 2x2 tiles? 

叶孤心的专栏 770

POJ2506 Tiling 【大数和】

Tiling Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8041   Accepted: 3898 Description In how many ways can you tile a 2xn rectangle by 2x1 or 2x2 tiles?

星尘 511

POJ 2506 Tiling(大数版递推)

Tiling Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8334   Accepted: 4023 Description In how many ways can you tile a 2xn rectangle by 2x1 or 2x2 tiles? 

Chunzhen的博客 705

POJ 2506 Tiling dp+大数 水题

大致题意:现有两种方块(1X2,2X2),方块数量无限制。问用这两种方块填满2Xn的矩阵的填法有多少种。 分析:通俗点说,找规律。专业化一点,动态规划。   状态d[i],表示宽度为i的填法个数。   状态转移方程:d[0]=d[1]=1,i=0,1;          d[i]=d[i-1]+d[i-2]*2;   c或者c++写的话,先模拟下大数吧,java直接用大数类就行了。 c...

weixin_33953384的博客 141

HDOJ 2501 Tiling_easy version(递推)

Tiling_easy version Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 6248    Accepted Submission(s): 4892 Problem Description 有一个大小是

Chunzhen的博客 555

POJ 2506 Tilling

大意不再赘述。 思路:把前几个元素都推出来,然后高精度即可,可得到 ans[i] = ans[i-1] + ans[i-2]*2; #include #include #include #include #include using namespace std; const int MAXN = 1100; int n; struct bign { int len, s[MAX

Wall_F的专栏 720
上一篇: 杭电1018-Big Number(大数)
下一篇: poj1995-Raising Modulo (快速幂)
Eric_keke
博客等级 码龄12年 37粉丝 221原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值