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.  

 

你可能感兴趣的:(in)