⑴ 根据题意,可以推理出当前战斗力为N、能量元素有X个的雇佣兵,能够进入M天战斗期的先决条件包含如下
两条:
① 能量元素的个数X可以将雇佣兵的体力恢复为M,也即X * N >= M;
② M天战斗期结束后,雇佣兵可以提升战斗力,也即M >= N;
⑵ 在满足以上两个条件的前提下,通过循环,做以下操作:
① 首先,令X = X - (int) Math.ceil(1.0 * M / N),也即进入M天的战斗期前,需要消耗能量元素恢
复体力M;
② 其次,令N = N + M / N,也即M天战斗期后提升战斗力;
⑶ 循环结束后,N中存储了雇佣兵能够达到的最大战斗力。
三、程序代码
importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[] args){Scanner input =newScanner(System.in);intM= input.nextInt();// 雇佣兵的体力最大值intN= input.nextInt();// 雇佣兵的战斗力intX= input.nextInt();// 雇佣兵的能量元素个数/* 战斗力为N、能量元素有X个的雇佣兵,能够进入M天战斗期的先决条件:
I. 能量元素的个数X可以将雇佣兵的体力恢复为M,也即X * N >= M
II. M天战斗期结束后,可以提升战斗力,也即M >= N
*/while(X*N>=M&&M>=N){X=X-(int)Math.ceil(1.0*M/N);N=N+M/N;}System.out.print(N);}}