题目:
假设有两种微生物 X 和 Y
X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。
一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。
现在已知有新出生的 X=10, Y=89,求60分钟后Y的数目。
如果X=10,Y=90呢?
本题的要求就是写出这两种初始条件下,60分钟后Y的数目。
分析
x 每隔 3 min 数目加倍
y 每隔 2 min 数目加倍
新生 x 0.5min 先吃 一个 y 之后每隔 1 min 吃 一个 y
x = 10 y=89 z=60
我们用120min表示 60min 便于新生x每0.5min吃掉一个y
所以
y 每隔 4 min 数目翻倍
x 每隔 6 min 数目翻倍
新生 x 1min 吃一个 y 之后每隔 2 min 吃一个y
注:新X在第13.min出生时,老X在第13min就吃过Y,
所以在第8min时,老X与新X同时进食,故放在一起计算。
(后面为循环,故研究第一次即可)
用for循环时间z
for(int i=0; i<120; i++)
每隔一分钟: if(i%2==1) y=y-x;
每隔四分钟: if(i%4==0) y=2y;
每隔六分钟: if(i%6==0) x=2x;
public class _15 {
public static void main(String[] args) {
// 微生物 x,微生物 y,时间 z
int x=10,y=90,z=120;
for (int i = 0; i < z; i++) {
if(y<0) //y 被吃光了,终止循环
break;
if(i%2==1) //每隔两分钟吃 y
y=y-x;
// if(i%4==0) y每隔四分钟加倍
y*=2;
// if(i%6==0) x每隔六分钟加倍
x*=2;
}
System.out.println(y);
}
}