微生物增殖|2012年蓝桥杯B组题解析第一题-fishers

  1. (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%20时(Y-=x);当t%40时 (Y=2); 当t%6==0时(X=2)

代码:

#include<iostream>
using 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<<y<<endl;
    return 0;
}
posted @ 2019-01-30 11:07  fishers  阅读(298)  评论(0编辑  收藏  举报