题目
假设有两种微生物 X 和 Y
X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。
一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。
现在已知有新出生的 X=10, Y=89,求60分钟后Y的数目。
如果X=10,Y=90 呢?
分析
以半分钟为一个单位计算,60分钟也就是120个半分钟
代码
(一)C++
#include <iostream>
using namespace std;
int main()
{
int X,Y;
cin>>X>>Y;
for(int i=1;i<=120;i++)
{
if(i%2==0)
{
Y-=X;
if(Y<0) Y=0;
}
if(i%4==0) Y*=2; //每隔两分钟 Y 就增加一倍
if(i%6==0) X*=2; // X出生后每隔 3 分钟分裂一次
}
cout<<X<<' '<<Y<<endl;
system("pause");
}
(二)Java
import java.util.Scanner;
public class 微生物增殖 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("X的初值为");
int X = input.nextInt();
System.out.print("Y的初值为");
int Y = input.nextInt();
for (int i = 1; i <= 120; i++) {
if (i % 2 == 0) {
Y -= X;
if (Y < 0) {
Y = 0;
}
}
if (i % 4 == 0) {
Y *= 2;
}//每隔两分钟 Y 就增加一倍
if (i % 6 == 0) {
X *= 2;
}// X出生后每隔 3 分钟分裂一次
}
System.out.println("Y的数目为"+ Y);
}
}
输出结果
Y的数目为94371840