微生物增值

xiaoxiao2021-02-28  74

/*假设有两种微生物 X 和 Y X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。 一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。 现在已知有新出生的 X=10, Y=89,求60分钟后Y的数目。 如果X=10,Y=90  呢?

本题的要求就是写出这两种初始条件下,60分钟后Y的数目。*/

--------------------------------------------------------------code1-------------------------------------------------------------------------------------------

public class AL21 { /** * @param args */ public static void main(String[] args) { float res=add(10,89,60)>0?add(10,89,60):0; System.out.println(res); System.out.println(add(10,90,60)>0?add(10,90,60):0); } public static long add(long x,long y ,int m) { int n=1; while(n<=m) { y=y-x; if(n%2==0) y=y*2; if(n%3==0) x=x*2; n++; } return y; } }

--------------------------------------------------------code2------------------------------------------------------------------------

//idea: 把1分钟拆成两个半分钟,那么60分钟就是120个半分钟 publicclass AL22{ publicstaticvoidcalculate(intprimaryNumX,intprimaryNumY,inttimesOfMinute) { intnumX=primaryNumX,numY=primaryNumY; for (int i = 2; i<=timesOfMinute*2; i++) { if(numY<=0){ numY=0; break; } if(i%2==0){ numY-=primaryNumX;// 当为整数分钟时,最初数目的生物X将进食同等数目的生物Y } elseif(i%2==1){ numY-=(numX-primaryNumX);//当为半数分钟的奇数倍时,由最初的生物X增值产生的生物X将进食同等数目的生物Y } if(i%6==0){ numX*=2; //三分钟的整数倍,生物X增值一倍 } if(i%4==0){ numY*=2;//两分钟的整数倍,生物Y增值一倍 } } System.out.println(numY); } publicstaticvoidmain(String[] args) { calculate(10,89, 60); calculate(10,90, 60); } }

转载请注明原文地址: https://www.6miu.com/read-53828.html

最新回复(0)