假设有两种微生物 X 和 Y
X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。
一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。
现在已知有新出生的 X=10, Y=89,求60分钟后Y的数目。
如果X=10,Y=90 呢?
本题的要求就是写出这两种初始条件下,60分钟后Y的数目。
X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。
一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。
现在已知有新出生的 X=10, Y=89,求60分钟后Y的数目。
如果X=10,Y=90 呢?
本题的要求就是写出这两种初始条件下,60分钟后Y的数目。
#include<iostream>
#include<string>
#include<cstring>
#include<stack>
#include<queue>
#include<iomanip>
#include<cmath>
using namespace std;
int main() {
int x = 10, y=90;//10,89的时候已经jj了,但y为90的时候就为94371840
for (int i = 1; i <=120;i++) {
if (i%2==1) {//
y -= x;
}
if (i%4==0) {//Y每两分钟
y *= 2;
}
if (i%6==0) {//X每三分钟
x *= 2;
}
}
cout << y << endl;
return 0;
}
凭空很难想明白代码的意思,将数据按照下表写到4分钟的时候就差不多明白了。(PS严重吐槽CSDN写博客的功能,没撤销,表格添加了下面就没法写了!
!)
思路:先通过列具体的数据理解下题目
时间 | X的数量 | Y的数量 | 备注 | ||||
0.0 | 10 | 90 | |||||
0.5 | 10 | 80 (90-10) | 半分钟后新生的x吃掉了y | ||||
1 | 10 | 80 | |||||
1.5 | 10 | 70 | 一分钟后旧的x吃掉了y | ||||
2 | 10 | 140(70*2) | 两分钟后y的数量翻倍 | ||||
2.5 | 10 | 130 |
| ||||
3 | 20 | (x对应10个旧的10个新的) | 130 | ||||
3.5 | 20 | 110 | 一分钟后10个旧的吃掉10个y,半分钟后10个新的吃掉10个y | ||||
4 | 20 | 220 |
两分钟后y的数量翻倍
|