蓝桥杯 -- 微生物繁殖
题目描述:
假设有两种微生物 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 种群灭绝的最后一根稻草!
请忍住悲伤,把答案写在“解答.txt”中,不要写在这里!
两个整数,每个1行。
参考答案:
0
94371840
题意剖析:
1、刚开始时,X和Y都是新生的。
2、对于X微生物的“饭量”(一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。)
我们可以理解为:一个X每分钟吃掉一个Y(一个新出生的X,它在0.5分钟的时候吃了一个Y,
在第1.5分钟吃一个,2.5分钟又吃了一个,也就是说,三分钟内,X吃了3个Y)
3、X的数量和Y的数量都要动态更新,(X一分钟吃一个Y,X 3分钟增殖一次,Y两分钟增值一次)
4、到最后Y的值可能为负数(Y被吃完了)
1 #include <stdio.h> 2 3 int main () 4 { 5 long long x = 10, y = 90; // X = 10 6 for (int i = 1; i <= 60; i ++) 7 { 8 y -= x; // X每分钟吃一个Y 9 if (i%3==0) // X每三分钟分裂一次 10 x += x; 11 if (i%2==0) // Y没两分钟分裂一次 12 y += y; 13 if (y < 0) // Y可能会被吃完 14 { 15 y = 0; break; 16 } 17 } 18 printf("%lld\n",y); 19 return 0; 20 }
欢迎评论!也可以私我。。。