Tiling

 

 

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 is a sequence of lines, each line containing an integer number 0 <= n <= 250.

输出

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

示例输入

2
8
12
100
200

示例输出

3
171
2731
845100400152152934331135470251
1071292029505993517027974728227441735014801995855195223534251
01.#include<stdio.h>  
02.#include<string.h>  
03.int ans[260][300];  
04.int main ()  
05.{  
06.    int n,i,j;  
07.    while(~scanf("%d",&n))  
08.    {  
09.        memset(ans,0,sizeof(ans));  
10.        ans[0][0]=1;  
11.        ans[1][0]=1;  
12.        ans[2][0]=3;  
13.        if(n<=2)  
14.            printf("%d",ans[n][0]);  
15.        else  
16.        {  
17.  
18.            int cnt=1,s;  
19.            for(i=3;i<=n;i++)  
20.            {  
21.                int beyond=0;  
22.                for(j=0;j<cnt;j++)  
23.                {  
24.                    s=ans[i-2][j]*2+ans[i-1][j]+beyond;  
25.                    ans[i][j]=s%10;  
26.                    beyond=s/10;  
27.                }  
28.                if(beyond)  
29.                {  
30.                    ans[i][cnt]=beyond;  
31.                    cnt++;  
32.                }  
33.            }  
34.            for(j=cnt-1;j>=0;j--)  
35.                printf("%d",ans[n][j]);  
36.  
37.        }  
38.        printf("\n");  
39.    }  
40.    return 0;  
41.}  
42.  

 

posted on 2013-04-10 00:36  straw_berry  阅读(201)  评论(0编辑  收藏  举报