蓝桥杯 -- 微生物繁殖

题目描述:

假设有两种微生物 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 }

欢迎评论!也可以私我。。。

posted @ 2017-04-02 11:10  gaoyanliang  阅读(687)  评论(0编辑  收藏  举报