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

微生物分裂的有关问题,求各位指点

2012-08-28 
微生物分裂的问题,求各位指点啊题目:微生物X和Y,X每3分钟分裂一次,Y每2分钟分裂一次,一个新生的X在0.5分钟

微生物分裂的问题,求各位指点啊
题目:微生物X和Y,X每3分钟分裂一次,Y每2分钟分裂一次,一个新生的X在0.5分钟内会吃掉一个Y,而且每个X每过1分钟会吃掉一个Y。。。
问题:当新生的X=10,Y=89时,求60分钟后X和Y的数量;
当X=10,Y=90时,60分钟后X和Y的数量;
新手上路,求各位指点啊,谢谢

[解决办法]
这个题本身设计有错,没有指出在每2分钟时应该先计算X吃掉的Y还是先计算Y的分裂。

此外,按照题中指定的初始值,等不了多少时间Y就会被吃光了。别说60分钟,就是10分钟后你也不可能再看见半个Y。

C/C++ code
#include<iostream>using namespace std;int main(){    int X=10;    int Y=90;    for (int time=1;time<=60*2;++time)    //  循环处理,每次循环代表过去了0.5分钟    {        if (time%6==0)            X*=2;        if (time%4==0)            Y*=2;        Y-=X;                    //  每0.5分钟X会吃掉同样数量的Y        cout<<((double)time)/2<<"分钟:"<<"X="<<X<<"  Y="<<Y<<endl;        if (Y<=0)        {            cout<<"死光了......"<<endl;            break;        }    }}
[解决办法]
将时间扩大2倍后,X6分钟分裂,Y4分钟分裂,新生X在1分钟(6T+1)后吃掉Y,之后2分钟(6T+3,6T+5)吃掉Y。发现在偶数分钟内X和Y分裂,而X也只有在奇数分钟才会吃掉Y。所以不存在先吃掉还是先分裂的情况!
[code=C/C++][/code]
int main(){
long long int x = 10, y;
cout<<"请为Y输入一个值"<<endl;
cin>>y;
int t;
cout<<"请为t输入一个值"<<endl;
cin>>t;
long long int m,n;
m=0; n=x;

for (int i = 1; i <= 2*t; i++)
{
if(i%4 == 0)
{y = 2 * y;}
if(i%6 == 0)
{n=2*m;m=0;}
if(i%6 == 1)
{y=y-n;m=m+n;n=0;}
if(i%6 == 3)
{y=y-m;}
if(i%6 == 5)
{y=y-m;}
cout<<i/2<<"分钟后: "<<y<<endl;
}
system("pause");
}

热点排行