题目描述
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
输入
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
n=0表示输入数据的结束,不做处理。
输出
对于每个测试实例,输出在第n年的时候母牛的数量。
每个输出占一行。
样例输入
2 4 5 0
样例输出
2
4
6
#include <stdio.h> #include <string.h> typedef struct { int data; }Box; typedef struct { Box data[1000]; int top; }Stack; int CalCow(int n) { int num = 1; int index = 0; Stack s; s.top=1; memset(s.data,-1,sizeof(s.data)); s.data[s.top].data = 1; for(int i = 2;i<=n;i++) { index++; s.data[i].data = num; if(index == 3) { num += s.data[i-2].data; index--; } } int k = 1; int i = 2; while(1) { if(s.data[i].data == -1) break; k += s.data[i].data; i++; } return k; } int main() { int i = 0; int input[100]; memset(input,-1,sizeof(input)); scanf("%d",&input[0]); while(input[i] != 0) scanf("%d",&input[++i]); for(int j = 0;j<i;j++) printf("%d ",CalCow(input[j])); return 0; }