P1867 【Mc生存】经验值 测试数据#3有点问题
  • 板块工单反馈版
  • 楼主ErXiao
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/2/5 23:14
  • 上次更新2023/10/24 01:34:50
查看原帖
P1867 【Mc生存】经验值 测试数据#3有点问题
818617
ErXiao楼主2023/2/5 23:14

题目中说“每次操作可以获得 aa 经验值(不能为负)”,当我判断输入为负时跳出本次循环后测试点#3无法通过

AC代码-未判断经验值

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    double life = 10.0;
    int score, level;
    score = level = 0;

    int n, aScore;
    double cost = 0.0;
    scanf("%d", &n);
    while (n--)
    {
        scanf("%lf%d", &cost, &aScore);

        life -= cost;
        if (life > 10.0)
            life = 10;
        if (life <= 0.0)
            break;
        score += aScore;
    }

    while (score >= pow(2, level))
    {
        score -= pow(2, level);
        level++;
    }
    printf("%d %d\n", level, score);

    return 0;
}

测试点#3无法通过代码,添加经验值为负判断

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    double life = 10.0;
    int score, level;
    score = level = 0;

    int n, aScore;
    double cost = 0.0;
    scanf("%d", &n);
    while (n--)
    {
        scanf("%lf%d", &cost, &aScore);
        # 判断并处理后无法AC
        if (aScore < 0.0)
            continue;
        life -= cost;
        if (life > 10.0)
            life = 10;
        if (life <= 0.0)
            break;
        score += aScore;
    }

    while (score >= pow(2, level))
    {
        score -= pow(2, level);
        level++;
    }
    printf("%d %d\n", level, score);

    return 0;
}
2023/2/5 23:14
加载中...