微生物的数量(请用C++编写~~谢谢~)

来源:百度知道 编辑:UC知道 时间:2024/05/10 08:06:36
问题描述

某种微生物从其产生第4个单位时间后开始,每个单位时间繁殖1个新的同种微生物。假设时刻0仅有1个这种微生物,问经过n个单位时间后共有多少个这种微生物(假设这种微生物不死亡)。

输入

输入数据有若干行。每行上有一个正整数n,对应一种情形。

输出

对于每一种情形,先输出“Case #:”(#为序号,从1起),然后输出n,逗号,结果,换行。

输入样例

4

5

15

输出样例

Case 1: 4, 1

Case 2: 5, 2

Case 3: 15, 50
只要个大概的算法思路就行了~~谢谢~~

这个问题和下面的问题是一致的。
下面的有解答思路,还有完整的程序,程序在win-tc和Dev-c++下我已运行通过:
递增的牛群:若一头小母牛,从第四年开始每年生一头母牛,按此规则,N年以后将有多少头牛?
分析:对该问题首先可用枚举法列出前几年的结果:
第一年: 1 第二年: 1 第三年: 1
第四年: 2 第五年: 3 第六年: 4
第七年: 6 第八年: 9 第九年: 13
第十年: 19 ......
从以上数据可以看出:从第四年开始,每年的数据都是前一年的数据
与前三年的那年数据之和。这样,就不难得出问题的解决方案。(递增牛群1.c)
解法一: 该解法利用f3,f2,f1,f这几个变量来保存前一、二、三年以及本年的牛的数量。
#include <stdio.h>
#include <stdlib.h>
int main()
{int i,year,f,f1,f2,f3;
printf("请输入年份:");
scanf("%d",&year);
for(i=1;i<=year;i++)
{ if(i<4)
f=f1=f2=f3=1;
else
{ f=f1+f3;
f1=f2;
f2=f3;
f3=f;
}
printf("第%d年有%d头牛.\n",i,f);
}
getch();
return 0;
}
解法二: 该解法利用一个数组来实现循环队列的功能。其中变量i相当于队
列指针,把它与队列结点取模之后,随着i值的递增就能实现循环地遍历数组的
功能。(递增牛群2.c)
#include <stdio.h>
#include <stdlib.h>
int main()
{int i,year