首页 > 试题广场 >

回合制游戏

[编程题]回合制游戏
  • 热度指数:7706 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
你在玩一个回合制角色扮演的游戏。现在你在准备一个策略,以便在最短的回合内击败敌方角色。在战斗开始时,敌人拥有HP格血量。当血量小于等于0时,敌人死去。一个缺乏经验的玩家可能简单地尝试每个回合都攻击。但是你知道辅助技能的重要性。
在你的每个回合开始时你可以选择以下两个动作之一:聚力或者攻击。
    聚力会提高你下个回合攻击的伤害。
    攻击会对敌人造成一定量的伤害。如果你上个回合使用了聚力,那这次攻击会对敌人造成buffedAttack点伤害。否则,会造成normalAttack点伤害。
给出血量HP和不同攻击的伤害,buffedAttack和normalAttack,返回你能杀死敌人的最小回合数。

输入描述:
第一行是一个数字HP
第二行是一个数字normalAttack
第三行是一个数字buffedAttack
1 <= HP,buffedAttack,normalAttack <= 10^9


输出描述:
输出一个数字表示最小回合数
示例1

输入

13
3
5

输出

5
头像 牛客题解官
发表于 2020-06-05 18:48:40
精华题解 题解: 题目难度:二星 考察点: 思维,数学 易错点: C++中的除法是向下去整,也就是说当和均为整数时,只取整数部分,因此当全由构成时,其结果应该为,否则不能整除时就会少计算一个 解法:数学 当使用时,需要一个回合来蓄力,一个回合来攻击,需要两个回合。因此,当倍的都无法超过时,才使用,否则使用一定 展开全文
头像 steven0926
发表于 2024-12-18 17:21:21
def min_turns_to_defeat(hp, na, ba): # 如果普通攻击就能一回合击败敌人,直接返回1 if hp <= na: return 1 # 如果两倍的聚力攻击能击败敌人,考虑是否使用聚力 if hp < 展开全文
头像 王子的诱惑
发表于 2020-08-08 10:06:13
while 1: try: hp,n,b=int(input()),int(input()),int(input()) if 2n>=b:#2次攻击都大于聚力攻击,那就选择普通攻击 print(hp//n+(hp%n!=0)) 展开全文