题目大意:从1开始,每一步遇1在前面加0,遇0在前面加1.问经过n步后出现连续2个0的个数。
第一次为0,第二次为1,第三次为1,第四次为3,第五次为5.
第n次为(n-1)+2(n-2)。找到规律就是大数的乘法了。
#include <stdio.h>
int f[1010][500];
int main()
{
int n,i,len,j,temp;
f[3][0]=f[2][0]=1;//f[n][0]表示第n次数字位数
f[3][1]=f[2][1]=1;
len=1;
for(i=4;i<=1000;i++)
{
temp=0;
for(j=1;j<=len;j++)
{
temp=f[i-1][j]+2*f[i-2][j]+temp;
f[i][j]=temp%10;
temp=temp/10;
}
while(temp!=0)
{
f[i][++len]=temp%10;
temp/=10;
}
f[i][0]=len;
}
while(scanf("%d",&n)!=EOF)
{
if(n==1)
{
printf("0\n");
continue;
}
for(i=f[n][0];i>=1;i--)
{
printf("%d",f[n][i]);
}
printf("\n");
}
return 0;
}