2041--
#include "stdio.h"
int main()
{
int i,m,n;
int f[50];
scanf("%d",&n);
while(n--)
{
scanf("%d",&m);
f[0]=0;f[1]=1;f[2]=1;
for(i=3;i<=m;i++)
{
f[i]=f[i-1]+f[i-2];
}
printf("%d\n",f[m]);//输出的是判断所有后f[m]的值;
}
return 0;
}
PS:用数组可以储存已经算过的数,而用递归函数则会每次重新运算,造成超时。
2047--
#include "stdio.h"
int main()
{ int i;
__int64 s[50]={0,3,8};
for(i=3;i<50;i++)
s[i]=2*(s[i-1]+s[i-2]);
while(~scanf("%d",&i))
printf("%I64d\n",s[i]);
return 0;
}
主要是递推公式。。。
s[1]=3,s[2]=8,s[3]=22;