(3')微生物增殖
假设有两种微生物 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 种群灭绝的最后一根稻草!
答案:0 和 94371840
思路:模拟分裂过程,以半分钟为一个单位。
1 Y-=X(新出生的X) 3 Y-=X(X隔了一分钟) 5 Y-=X(X隔一分钟) 7 Y-=X(新出生的+隔了一分钟)
2 4 Y=2 (Y翻倍) 6 X=3 (X翻倍) 8 Y*=2(Y翻倍)
通过上面的数字模拟。很显然我们得到了规律即:(假设t=1,t<=120)当t%2==0时(Y-=x);当t%4==0时 (Y=2); 当t%6==0时(X=2)
代码:
#includeusing namespace std;int main(){ int t; int x=10; int y=90;// int y=89; for(t=1;t<=120;t++) { if(t%2==1)y-=x; if(t%6==0)x*=2; if(t%4==0)y*=2; } if(y<0)y=0; cout< <