时间限制: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;
}