1 条题解

  • 0
    @ 2025-8-24 23:13:22

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Transparent_fish
    路虽远,行则将至;事虽难,做则必成 || 开学以文化为主,信奥其次 || 学术模式 : off

    搬运于2025-08-24 23:13:22,当前版本为作者最后更新于2025-04-14 15:00:58,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    思路

    其实这题就是一题纯模拟,直接模拟三种攻击造成的伤害总和后再判敌人血量是否小于 00 就行了,我们需要使用一个变量 hphp 来表示敌人的血量,使用变量 cntcnt 来表示回合数,然后按以下步骤进行模拟。

    1. 攻击1:

    直接让 hphp 减去 55 即可。

    1. 攻击2:

    如果回合数除 2211 就让 hphp22;如果回合数除 2200 就让 hphp1515 即可。

    1. 攻击3:

    如果回合数除 3311 就让 hphp22;如果回合数除 3322 就让 hphp1010;如果回合数除 3300 就让 hphp77 就行了。

    最后进行判断 hphp 是否小于 00 就行了。

    Code:

    #include <iostream>
    using namespace std;
    #define int long long
    int hp = 2025;//敌人总血量
    int cnt = 0;//回合数
    
    signed main() {
    	while (hp > 0) {//如果血量大于0(没敌人没阵亡)就继续循环
    		cnt++;//回合数++
    		int a = 5;//攻击1的固定伤害。
    		int b = (cnt % 2 == 1) ? 15 : 2;//写的有一点飘逸的攻击2伤害,如果当前回合是基数,那么对Boss造成15伤害,偶数回合造成2点伤害
    		int c;//攻击3。
    		if (cnt % 3 == 1) {//当回合数除以 3 的余数为 1 时攻击 2 的血量
    			c = 2;
    		} else if (cnt % 3 == 2) {//当回合数除以 3 的余数为 2 时攻击 10 的血量
    			c = 10;
    		} else {//当回合数除以 3 的余数为 0 时攻击 7 的血量
    			c = 7;
    		}
    		int sum = a + b + c;//总和
    		hp -= sum;//减少攻击总和
    	}
    	cout << cnt;//输出答案
    	return 0;
    }
    
    • 1

    信息

    ID
    12021
    时间
    1000ms
    内存
    512MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者