假设有两种微生物 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(void) {
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-=X;
if(i%4==0)//每 2 分钟翻倍
Y*=Y;
if(i%6==0)//每 3 分钟翻倍,X 和 Y 的翻倍是相互独立的,不需要另作讨论
X*=X;
}
printf("%d\n",Y);
}