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.