Tiling

时间:2023-04-21 22:01:44

地址:http://poj.org/problem?id=2506

递推公式::f[x]=f[x-1]+f[x-2]*2

需要用到大数。

 #include<stdio.h>
#include<string.h>
#define max 100
int f[][max];
int h[max];
int main()
{
int n,j;
while(scanf("%d",&n)!=EOF)
{
if(n==) {printf("1\n");continue;}
memset(f,,sizeof(f));
f[][]=;
f[][]=;
for(int i=; i<=n; i++)
{
int c=;
for(j=; j<max; j++)
{
int s=f[i-][j]*+c;
h[j]=s%;
c=s/;
}
int t=;
for(int k=; k<max; k++)
{
int m=h[k]+f[i-][k]+t;
f[i][k]=m%;
t=m/;
}
}
for(j=max-; j>; j--)
{
if(f[n][j])break;
}
for(int x=j; x>=; x--)
{
printf("%d",f[n][x]);
}
printf("\n");
}
return ;
}