题目内容 假设有两种微生物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种群灭绝的最后一根稻草!
起初看题目觉得很麻烦,生物x会分成两种一种 新出生,和成长后的 经过思索后发现了规律 首先为了便于计算,将时间都都乘以了,这样就可以不考虑小数了
观察x t— x —y 1 — x — y-=x 3 — x—- y-=x 5 — x — y-=x 6 — 2x — y
7 — 2x — y-=2x 9 — 2x—- y-=2x 11— 2x — y-=x 12— 4x — y 发现了吧,6分钟(乘以2后)一循环 有这个就可以写出代码了
代码如下
代码语言:javascript复制#include <iostream>
using namespace std;
long slove(long x,long y)
{
for(int i = 1;i <=120; i )
{
if(i%2==1)
{
y -= x;//发现奇数的时候就吃y
}
if(i%6 ==0)
{
x *=2;
}
if(i%4==0)
{
y *= 2;
}
}
return y;
}
int main()
{
cout << slove(10,89) << endl;
cout << slove(10,90) << endl;
return 0;
}