// 算法:母牛的故事
// 刚生下的奶牛计为0岁,2岁过完,到3岁开始生小牛。
// 用4个元素的数组存放母牛的数量。第0,1,2三个元素存放0-2岁的奶牛数量,
// 第3个元素存放4岁及以上的奶牛(可生育)数量。循环指定的年数,
// 每年处理增加奶牛的年龄及刚出生奶牛的数量。
#include <stdio.h>
int main()
{
int nCow[4], i, nBorn, nYears[60] = { 1, };
for ( i = 0; i < 60 && nYears[ i - 1 ] != 0; ++i )
scanf( "%d", &nYears[i] ); // 批量输出
for ( i = 0; nYears[i] != 0; ++i )
{ // 批量计算每个输入的年数
for ( nCow[0] = nCow[1] = nCow[2] = 0, nCow[3] = 1;
nYears[i] > 1; --nYears[i] )
{ // 循环指定的年数
nCow[3] += nCow[2]; // 将2岁过完的奶牛加入生育组
nBorn = nCow[3]; // 计算这一年生育的奶牛数
nCow[2] = nCow[1]; // 1岁组数量存入2岁组
nCow[1] = nCow[0]; // 0岁组数量存入1岁组
nCow[0] = nBorn; // 新出生的小牛
} // 下面打印输出
printf( "%d\n", nCow[0] + nCow[1] + nCow[2] + nCow[3] );
}
return 0;
}
#include <stdio.h>
int main()
{
int i,n,a[100];
while(scanf("%d",&n)!=EOF)
{
a[1]=1;a[2]=2;a[3]=3;
for(i=4;i<=n;i++)
a[i]=a[i-1]+a[i-3];
if(n==0)
break;
printf("%d\n",a[n]);
}
return 0;
}