hdu 2046

来源:互联网 发布:苏州房产成交数据 编辑:程序博客网 时间:2024/05/21 01:27

题目概述

有一2×n大小的长方形,用1×2的长方形条填满它,问有多少中填法,对称的方法视为不同的方法

时限

1000ms/2000ms

输入

每行一个正整数n

限制

1<=n<=50

输出

每行一个数,所求方法数

样例输入

1
3
2
50

样例输出

1
3
2
20365011074

讨论

递推,题目出处再次暴露,这类题基本都是递推,根据前3组样例,自己再求出两个,基本可确认是斐波那契数列,不过有点经验都知道开int会上溢,50的规模long long还能接受,没必要再写个矩阵幂法,硬算就行

题解状态

15MS,1720K,517 B,C++

题解代码

#include<algorithm>  #include<string.h>  #include<stdio.h>  using namespace std;#define INF 0x3f3f3f3f  #define MAXN 203#define memset0(a) memset(a,0,sizeof(a))#define llong long longllong fun(llong n){    llong a = 0, b = 1, c = 1;    for (llong p = 0; p < n; p++) {        c = a + b;        a = b;        b = c;    }    return c;}int main(void){    //freopen("vs_cin.txt", "r", stdin);    //freopen("vs_cout.txt", "w", stdout);    llong a;    while (~scanf("%lld", &a)) {//input        printf("%lld\n", fun(a));//output    }}

EOF

0 0
原创粉丝点击