本题的要求就是写出这两种初始条件下,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); } }