利用C++编写母牛生小牛的程序怎么写啊?

来源:百度知道 编辑:UC知道 时间:2024/05/29 07:59:06
Problem A
Description
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?(分析时间复杂度,用大O表示)
Input
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
n=0表示输入数据的结束,不做处理。
Output
对于每个测试实例,输出在第n年的时候母牛的数量。
每个输出占一行。

以下程序假设的是开始时(第0年)母牛还不生牛小一头小牛,第一年满了才开始生牛,即第一年后牛总数 2 头。

复杂度O(n*(n-3))

#include<iostream.h>
int main()
{
int n,i,sum;
cout<<"输入测试年数,输0结束测试."<<endl;
cin>>n;

while( n ) //多余4年时母牛生的小牛会生小牛
{
if (n<5) //不足4年时母牛生的小牛不会生小牛
{
sum=1;
sum += n;
cout<<"第"<<n<<"年 共"<<sum<<"头"<<endl;
cin>>n;
}

else
{
sum = 4;
for (i=n-3; i>0 ;i--) //循环n-3次,最后三年生的3头小牛还不会生小牛
{
sum += i;
}
cout<<"第"<<n<<"年 共"<<sum<<"头"<<endl;
cin>>n;
}
}
return 0;
}

算法时间复杂度为O(n)
#include <iostream>
#include <vector>
using namespace std;

unsigned int getCowNum(unsigned int n)<