首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

每隔2分钟的有关问题

2012-04-17 
每隔2分钟的问题蓝桥题:假设有两种微生物 X 和 YX出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分

每隔2分钟的问题
蓝桥题:
假设有两种微生物 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 种群灭绝的最后一根稻草!
我认为是:

C/C++ code
#include <stdio.h>int main(void){    long int X=10, Y=90;    for(int k=0; k<=60; k++) //注意    {        Y -= X;       if(k%2==0)Y *= 2;//这样才是每隔2分钟吧       if(k%3==0)X *= 2;    }    printf("%ld", Y);    return 0;}结果为:188743680

他们认为:
C/C++ code
#include <stdio.h>int main(void){    long int X=10, Y=90;    for(int k=1; k<=60; k++) //注意    {        Y -= X;       if(k%2==0)Y *= 2;//每隔2分钟???????还像是隔了1分钟吧       if(k%3==0)X *= 2;    }    printf("%ld", Y);    return 0;}结果为:94371840

大家发表一下高见……

[解决办法]
我认为 k=0; k<=60 就是61分钟。
 k=1; k<=60是60分钟。
如果k=0; k<60勉强理解为60分钟。但是要有分列的话第1分钟是不会分列的。按如此理解
我的最终答案是用 k=1; k<=60
[解决办法]
后者是对的。
k=0,第0分钟时,x=10,y=90,此时x还未去吃掉y。下一分钟时也就是k=1时,每个x开始吃掉1个y,此时y-=x,在第1分钟时,x和y都未分裂。第2分钟时,每个x又吃掉1个y,此时y-=x,这是y又开始分裂,所以y*=2,但x未分裂,第3分钟时,每个x又吃掉1个y,此时y-=x,且x开始分裂,x*=2,... ... 
C/C++ code
#include <stdio.h>int main(void){    long int X=10, Y=90;    for(int k=1; k<=60; k++) //注意    {        Y -= X;       if(k%2==0)Y *= 2;//每隔2分钟???????还像是隔了1分钟吧       if(k%3==0)X *= 2;    }    printf("%ld", Y);    return 0;} 

热点排行
Bad Request.