9273:PKU2506Tiling

简介: 9273:PKU2506Tiling来源:http://noi.openjudge.cn/ch0202/9273/总时间限制:2000ms  单个测试点时间限制:1000ms内存限制:131072kB描述    对于一个2行N列的走道。

9273:PKU2506Tiling

来源:http://noi.openjudge.cn/ch0202/9273/

总时间限制:2000ms  单个测试点时间限制:1000ms
内存限制:131072kB
描述
    对于一个2行N列的走道。现在用1*2,2*2的砖去铺满。问有多少种不同的方式。
    下图是一个2行17列的走道的某种铺法。

输入
    整个测试有多组数据,请做到文件底结束。每行给出一个数字N,0 <= n <= 250
输出
    如题
样例输入
    2
    8
    12
    100
    200
样例输出
    3
    171
    2731
    845100400152152934331135470251
    1071292029505993517027974728227441735014801995855195223534251

分析:
f[n] = f[n-1] + f[n-2]*2 ;

使用这个递推公式,再加上高精度计算即可。

综合了高精度、递推,而且高精度的运用比较熟悉、巧妙。

 

代码来源:http://blog.csdn.net/c20180630/article/details/52329721

 1     #include<iostream>  
 2     #include<cstdio>  
 3     using namespace std;  
 4     int a[301][501];  //a[i]用来存储一个大整数,其中a[i][0]存储长度,真实数据倒序存储。
 5     int max(int x,int y){return x>y?x:y;}  
 6     int main()  
 7     {  
 8         a[1][0]=1;  
 9         a[1][1]=1;  
10         a[2][0]=1;  
11         a[2][1]=3;  
12         for(int i=3;i<=300;i++){  
13             for(int j=1;j<=max(a[i-2][0],a[i-1][0]);j++)  
14                 a[i][j]=a[i-1][j]+a[i-2][j]*2;  //高精度加法(按位加的操作)
15             a[i][0]=max(a[i-2][0],a[i-1][0]);  
16             for(int j=1;j<=a[i][0];j++){         //高精度加法的进位
17                 a[i][j+1]+=a[i][j]/10;  
18                 a[i][j]%=10;  
19             }  
20             while(a[i][a[i][0]+1]){              //更新高精度加法结果的位数
21                 a[i][0]++;  
22                 a[i][a[i][0]+1]+=a[i][a[i][0]]/10;  
23             }  
24         }  
25         int n;  
26         while(cin>>n){  
27             if(n==0)  
28                 cout<<1<<endl;  
29             else{  
30                 for(int i=a[n][0];i>=1;i--)  
31                     cout<<a[n][i];  
32                 cout<<endl;  
33             }  
34         }  
35     }
相关文章
|
SQL NoSQL MySQL
MongoDB 执行计划 & 优化器简介 (上)
最近,由于工作需求去了解一下Query是如何在MongoDB内部进行处理,从而丢给存储引擎的。里面涉及了Query执行计划和优化器的相关代码,MongoDB整体思路设计的干净利落,有些地方深入挖一下其实还是能有些优化点的。本文会涉及一条Query被parse之后一路走到引擎之前,都做了那些事情,分析基于MongoDB v3.4.6代码。由于篇幅过长,文章分为上下两篇,分别介绍执行计划 & 优化器和
3938 0
|
10月前
|
消息中间件 Java Kafka
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
本文介绍了Kafka集群的搭建过程,涵盖从虚拟机安装到集群测试的详细步骤。首先规划了集群架构,包括三台Kafka Broker节点,并说明了分布式环境下的服务进程配置。接着,通过VMware导入模板机并克隆出三台虚拟机(kafka-broker1、kafka-broker2、kafka-broker3),分别设置IP地址和主机名。随后,依次安装JDK、ZooKeeper和Kafka,并配置相应的环境变量与启动脚本,确保各组件能正常运行。最后,通过编写启停脚本简化集群的操作流程,并对集群进行测试,验证其功能完整性。整个过程强调了自动化脚本的应用,提高了部署效率。
2155 1
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
|
存储 算法 安全
详细解读CA认证原理以及实现(上)
详细解读CA认证原理以及实现(上)
448 0
|
缓存 前端开发 Java
"揭秘!SpringBoot携手Nginx,性能飙升秘籍大公开:轻松掌握配置优化,让你的应用快如闪电!"
【8月更文挑战第11天】随着微服务架构的发展,SpringBoot成为构建RESTful API的首选,Nginx则作为高性能的反向代理服务器提升应用性能。本文将探讨两者如何协同工作,包括Nginx的负载均衡策略、静态资源缓存及数据压缩配置;同时讨论SpringBoot的线程池优化、缓存策略及性能监控。通过这些方法,帮助开发者显著提高系统的整体性能和可用性。
641 1
|
11月前
|
开发框架 Android开发 开发者
移动应用开发之旅:从概念到实现
在数字时代的浪潮中,移动应用已成为我们日常生活不可或缺的一部分。本文将带你走进移动应用的开发世界,探索如何从一个简单的想法出发,经历设计、编码、测试直至最终发布的全过程。我们将一起揭开移动操作系统的神秘面纱,了解不同平台的特性,并通过实际代码示例,展示如何在Android和iOS这两大主流平台上打造出色的移动应用。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供宝贵的知识和启示,让你在移动应用开发的旅程上更加从容不迫。
193 1
|
12月前
|
安全 KVM 虚拟化
OpenEuler 中配置 KVM 虚拟化环境指南
本文档详细介绍了如何在OpenEuler系统中配置和管理KVM虚拟化环境,包括环境准备、组件安装、虚拟机安装及管理命令等,适合初学者和有经验的用户。内容覆盖了从桥接网卡配置到虚拟机的安装与管理,以及常见问题的解决方法,帮助用户高效利用虚拟化技术。
1146 0
|
API Nacos 数据库
Nacos配置问题之启动项目报错如何解决
Nacos是一个开源的、易于部署的动态服务发现、配置管理和服务管理平台,旨在帮助微服务架构下的应用进行快速配置更新和服务治理;在实际运用中,用户可能会遇到各种报错,本合集将常见的Nacos报错问题进行归纳和解答,以便使用者能够快速定位和解决这些问题。
5807 117
Latex标题左对齐
在ctexart类型文章中,标题\section标题是居中的,现需要改为左对齐,需要设置如下: \documentclass[UTF8]{ctexart} \CTEXsetup[format={\Large\bfse...
6557 0
|
XML 安全 Java
必知必会的Spring框架知识体系
必知必会的Spring框架知识体系
16112 6
必知必会的Spring框架知识体系
|
SQL 关系型数据库 MySQL
mysql多表查询(一口气解决掉:自连接 左右连接 满连接等)
多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。 前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键,也可能没有建立外键。比如:员工表和部门表,这两个表依靠“部门编号”进行关联。
mysql多表查询(一口气解决掉:自连接 左右连接 满连接等)