【算法学习笔记】牛客算法题:经此一役小红所向无敌

该博客介绍了如何计算两个角色光和对立在有限回合内对拥有巨大血量的小红造成的总伤害。通过分析每回合的攻击顺序和血量变化,确定战斗回合数,并考虑角色死亡后的大招伤害,得出最终伤害值。代码示例给出了Java实现的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:经此一役小红所向无敌

链接:https://ac.nowcoder.com/acm/contest/11214/A
来源:牛客网

题目描述

经过重重困难,对立和光终于来到魔王城,和最终的大魔王——小红进行决战。
已知小红的血量是 10^999999999
对立的攻击力是 a ,血量是 h。
光的攻击力是 b ,血量是 k 。
每回合光先对小红发起攻击,然后对立对小红发起攻击,然后小红展开幻术,令光和对立同时互相攻击。
每次攻击后,受击者的血量会减掉攻击者的攻击力。
当光和对立其中一人死亡后,另一人会悲痛欲绝,对小红发出自己攻击力*10的伤害的大招,然后自杀。(若两人同时死亡,则两人都无法发出大招)
小红想知道,弱小的光和对立,她们能对自己造成多少点伤害?

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

输入描述

 - 一行 4 个正整数 a , h , b , k ,用空格隔开。
 -  1≤a,b,h,k≤10^9

输出描述

一个正整数,代表小红受到的伤害。

示例

输入:
2 3 1 3
输出:
26
说明:
第一回合,小红受到了对立和光的攻击,并让她们互相攻击。第一回合结束时,小红共受到3点伤害。这时对立血量为2,光的血量为1。
第二回合,小红受到了对立和光的攻击,并让她们互相攻击。这时对立血量为1,光的血量为0死亡。对立放出大招后自杀。本回合小红共受到23点伤害。
小红受到的总伤害为:3+23=26

分析

先判断进行了多少回合的攻击才出现对立或光的死亡,然后判断是同时死还是某个先死,就可以得到:
总伤害=回合数*(对立攻击+光攻击)+(没死的攻击力*10或0)

代码(Java实现)

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        long a = 0L;//对立攻击力
        long h = 0L;//对立血量
        long b = 0L;//光攻击力
        long k = 0L;//光血量
        long damage = 0L;//伤害
        long[] arr = new long[4];
        for (int i=0;i<4;i++){
            arr[i] = in.nextInt();
        }
        a = arr[0];
        h = arr[1];
        b = arr[2];
        k = arr[3];
        //判断回合数
        long num1 = k/a;
        long num2 = h/b;
        //如果还有剩余血量则多加一回合
        if (k%a != 0)
            num1++;
        if (h%b != 0)
            num2++;
        long count = Math.min(num1,num2 );
        damage += count * (a+b);
        if (num1 != num2) {
            damage += num1 > num2 ? b*10 : a*10;
        }
        System.out.println(damage);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值