我的提交如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double hp = 10;
int level = 0;
int exp = 0;
int ActionCnts = scanner.nextInt();
for (int i = 0; i < ActionCnts; i++) {
double cost_hp = scanner.nextDouble();
int xp = scanner.nextInt();
// 先算血量
hp -= cost_hp;
// 血量小于等于0立马去世
if (hp <= 0){
break;
}
// 生命值上限为 10
if (hp > 10) {
hp = 10;
}
exp += xp;
}
// 计算升级花费的经验 2的m次方
double upgrade_cost_xp = Math.pow(2,level);
while (exp >= upgrade_cost_xp){
// 当 行动给予的经验 大于等于 升级所消耗的经验时 , 消耗经验并且升级 , 剩余的经验给到xp
// 一切结束以后,重新计算升级消耗
exp -= upgrade_cost_xp;
level ++;
upgrade_cost_xp = Math.pow(2,level);
}
System.out.printf(level + " " + exp);
}
}