核心代码就是:
f1[i]=f0[i-1];
f0[i]=f1[i-1]+f0[i-1];
i表示数的位数,f1表示以1为结尾的数的个数,f0表示以0为结尾的数的个数
那么最后结果就很简单啦,就是f1+f0哦,注意要用__int64
代码如下:
Code
#include<stdio.h>
__int64 f0[46],f1[46];
void init()
{
int i;
f0[0]=f1[0]=0;f0[1]=f1[1]=1;
for(i=2;i<46;i++){
f1[i]=f0[i-1];
f0[i]=f1[i-1]+f0[i-1];
}
}
int main()
{
int n,i,num;
init();
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d",&num);
printf("Scenario #%d:\n%I64d\n\n",i,f0[num]+f1[num]);
}
return 0;
}