假设有两种微生物 X 和 Y
X 出生后每隔 3 分钟分裂一次(数目加倍),Y 出生后每隔 2 分钟分裂一次(数目加倍)。
一个新出生的 X,半分钟之后吃掉 1 个 Y,并且,从此开始,每隔 1 分钟吃 1 个 Y。
现在已知有新出生的 X=10, Y=89,求 60 分钟后 Y 的数目。
如果 X=10,Y=90 呢?
本题的要求就是写出这两种初始条件下,60 分钟后 Y 的数目。
输出:1073741825
代码实现
#include<stdio.h>
int main()
{
int X=10,Y=89;
int i;
for(i=0;i<120;i++) //半分钟一个单位
{
if(i%2==1) /*因为 X 出生半分钟后就要吃 Y,尔后每 1 分钟要吃 Y,
所以永远都是奇数个半分钟的时候吃 Y,
又因为此时 X 不会增长(题目为了减小讨论的复杂度),所以直接减 X 数量即可。*/
Y = Y-X;
if(i%4==0) //每 2 分钟翻倍
Y=Y*Y;
if(i%6==0) //每 3 分钟翻倍,X 和 Y 的翻倍是相互独立的,不需要另作讨论
X=X*X;
}
printf("%d\n",Y);
return 0;
}