假设有两种微生物 X 和 Y , X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。 一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。 现在已知有新出生的 X=10, Y=89,求60分钟后Y的数目。 如果X=10,Y=90 呢?
不知大家发现规律没有,Y的数量只在0.5的奇数倍减少,偶数倍保持不变,那么规律就是每逢0.5的奇数倍,numY=numY-numX;由此可以推测,3.5min时,Y的数量为90……
这样分析的话是不是就好编写代码了呢。其实,有些时候,编代码没有我们想象的那么难,对其进行适当的抽象,编程我们熟悉的数学问题、物理问题等,或许是一种比较好的切入思路。
本题的要求就是写出这两种初始条件下,60分钟后Y的数目。
题目的结果令你震惊吗?这不是简单的数字游戏!真实的生物圈有着同样脆弱的性质!也许因为你消灭的那只 Y 就是最终导致 Y 种群灭绝的最后一根稻草。
思路:假设X和Y初始分别为10只和80只,那么0~3min内X和Y数量变化情况如图:
X | Y | |
0min | 10 | 80 |
0.5min | 10 | 80-10=70 |
1 | 10 | 70 |
1.5 | 10 | 70-10=60 |
2 | 10 | 120 |
2.5 | 10 | 120-10=110 |
3 | 20 | 110 |
这样分析的话是不是就好编写代码了呢。其实,有些时候,编代码没有我们想象的那么难,对其进行适当的抽象,编程我们熟悉的数学问题、物理问题等,或许是一种比较好的切入思路。