杀死敌人的最小回合数

时间限制:C/C++ 1秒

空间限制:C/C++ 32768K

拼多多8月30号的一到编程题

你在玩一个回合制角色扮演的游戏。现在你在准备一个策略,一边在最短的回合内击败敌方角色。在战斗开始时,敌人拥有HP格血量。当血量小于等于0时,敌人死去。一个缺乏经验的玩家可能简单的尝试每个回合都攻击。但是你知道辅助技能的重要性。

在你的每个回合开始时你可以选择一下两个动作之一:聚力或者攻击。

  • 聚力可以提高你下个回合的伤害。
  • 攻击会对敌人造成一定的伤害。如果你上个回合使用了聚力,那这次攻击会对敌人造成buffedAttack点伤害。否则,会造成normalAttack点伤害。

给出血量HP和不同攻击的伤害,buffedAttack和normalAttack,返回你能杀死敌人的最小回合数。

输入描述

第一行是一个数字HP
第二行是一个数字normalAttack
第三行是一个数字buffedAttack
1 <= HP,buffedAttack,normalAttack <=10^9

 输出描述:

输出一个数字表示最小回合数

 示例:

输入:
13
3
5

输出:
5

代码,已AC

#include <cstdio>
#include <iostream>
#include <vector>
using namespace std;

int main() {
	int hp, normalAttack, buffedAttack;
	cin >> hp >> normalAttack >> buffedAttack;
	if (normalAttack * 2 >= buffedAttack)
	{
		int x = hp / normalAttack;
		if (hp % normalAttack == 0)
		{
			cout << x;
		}
		else
		{
			cout << x + 1;
		}

	}
	else
	{
		int x = hp / buffedAttack * 2;
		int y = hp % buffedAttack;
		if (y ==0)
		{
			cout << x + 1;
		}
		int tt = y / normalAttack;

		if (y % normalAttack == 0)
			cout << x + tt;
		else
			cout << x + tt + 1;

	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_20613513/article/details/82350839