n=0表示输入数据的结束,不做处理。
每个输出占一行。
#include<stdio.h>
int main()
{
int n, i;
int can[1000], no[1000], sum[1000] ;
can[0] = 1;
sum[0] = 1;
no[0] = 0;
for( i = 1; i <= 55; i++ )
{
if( i < 4)
{
can[i] = 1;
sum[i] = i+1;
no[i] = i;
}
else
{
can[i] = can[i-3]+no[i-3];
no[i] = can[i]+no[i-1]-can[i]+can[i-1];
sum[i] = can[i] + no[i];
}
}
while( scanf( "%d", &n ) == 1)
{
if( n == 0 )
break;
else
printf( "%d\n", sum[n-1] );
}
}
#include<stdio.h>
int main( )
{
__int64 i , f[60];
f[1] = 1 ;
f[2] = 2 ;
f[3] = 3 ;
f[4] = 4;
for(i = 5 ; i < 60 ; i++)
f[i] = f[i-1] + f[i-3];
while(~scanf("%I64d",&i),i)
{
printf("%I64d\n",f[i]);
}
return 0;
}