假设有两种微生物 X 和 Y
X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。
一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。
现在已知有新出生的 X=10, Y=89,求60分钟后Y的数目。
如果X=10,Y=90 呢?
本题的要求就是写出这两种初始条件下,60分钟后Y的数目。
题目的结果令你震惊吗?这不是简单的数字游戏!真实的生物圈有着同样脆弱的性质!也许因为你消灭的那只 Y 就是最终导致 Y 种群灭绝的最后一根稻草!
答案是: 94371840
X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。
一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。
现在已知有新出生的 X=10, Y=89,求60分钟后Y的数目。
如果X=10,Y=90 呢?
本题的要求就是写出这两种初始条件下,60分钟后Y的数目。
题目的结果令你震惊吗?这不是简单的数字游戏!真实的生物圈有着同样脆弱的性质!也许因为你消灭的那只 Y 就是最终导致 Y 种群灭绝的最后一根稻草!
请忍住悲伤,把答案写在“解答.txt”中,不要写在这里!
==================================================================
如果按照网上流传的答案,代码应该是这样写的。
//微生物增殖问题
#include <stdio.h>
#define TIME 120
unsigned int proliferate(unsigned int x , unsigned int y );
int main(int argc, char const *argv[])
{
unsigned int X1 = 10, Y1 = 89;
unsigned int X2 = 10, Y2 = 90;
proliferate(X2 , Y2 );
proliferate(X1 , Y1 );
return 0;
}
unsigned int proliferate(unsigned int x , unsigned int y ){
unsigned int newX = 0;
int i;
for(i = 1; i <= TIME; i ++ ){
if( i % 2 == 0){
y = y - x;
}
if( i % 4 == 0){
y = y * 2;
}
if( i % 6 == 0 ){
newX = x;
x = x * 2;
}
}
printf("%d\n",y );
}
答案是: 94371840
0
但是我觉得他们都忽略了一个条件:一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。
还是有一个问题,在分钟数为2的倍数的时候,是X先吃掉Y呢,还是Y繁殖后再被X吃呢? 不同的优先级有不同的结果。
在这里我觉得还是不满足题目给的“一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。”这个条件。