两种物种(C语言)

假设有两种微生物 X 和 Y
X 出生后每隔 3 分钟分裂一次(数目加倍),Y 出生后每隔 2 分钟分裂一次(数目加倍)。
一个新出生的 X,半分钟之后吃掉 1 个 Y,并且,从此开始,每隔 1 分钟吃 1 个 Y。
现在已知有新出生的 X=10, Y=89,求 60 分钟后 Y 的数目。
如果 X=10,Y=90 呢?
本题的要求就是写出这两种初始条件下,60 分钟后 Y 的数目。
输出:1073741825

代码实现

#include<stdio.h>
int main()
{   
 int X=10,Y=89;
 int i;   
 for(i=0;i<120;i++)  //半分钟一个单位
 {
  if(i%2==1) /*因为 X 出生半分钟后就要吃 Y,尔后每 1 分钟要吃 Y,
              所以永远都是奇数个半分钟的时候吃 Y,
              又因为此时 X 不会增长(题目为了减小讨论的复杂度),所以直接减 X 数量即可。*/
   Y = Y-X;
  if(i%4==0)  //每 2 分钟翻倍
  Y=Y*Y;
  if(i%6==0)  //每 3 分钟翻倍,X 和 Y 的翻倍是相互独立的,不需要另作讨论
  X=X*X;
 }
 printf("%d\n",Y);
 return 0;
}
发布了36 篇原创文章 · 获赞 5 · 访问量 1005

猜你喜欢

转载自blog.csdn.net/matchless_QYW/article/details/104608847