Sheep_Li在打完训练赛后总是喜欢开一把王者,她最近练上了一个新英雄:不知火舞。为了提高二技能扇子的伤害,后期她会把所有其他装备卖掉换成贤者之书或者博学者之怒。 现在问题来了:假设当前她有N枚金币,她需要用这些金币去购买下面两种装备: 贤者之书:2990金币,获得400法术攻击。 博学者之怒:2300金币,获得240法术攻击,唯一被动:法术攻击提高30%. 例:如果Sheep_Li买了一个贤者之书和一个博学者之怒,那么她将获得(400+240)*130%=832. 其中,博学者之怒Sheep_Li只会购买一次(唯一被动),贤者之书无限购买。 假设没有购买装备数量限制,Sheep_Li最高可以获得多少法术攻击? 输入描述: 第1行输入测试用例数量T(1<=T<=105) 第2-T+1行输入一个整数N(1<=109),代表初始金币数量。 输出描述: 对于每组测试用例,输出最高法术攻击. 示例1 输入 复制 4 2200 2500 6000 10000 输出 复制 0 312 832 1352 说明 对于用例3,Sheep_Li买了博学者之怒和一个贤者之书. 对于用例4,Sheep_Li买了博学者之怒和两个贤者之书.的c++代码
时间: 2024-03-25 11:40:40 浏览: 12
```c++
#include <iostream>
using namespace std;
int main() {
int T;
cin >> T;
while (T--) {
int n;
cin >> n;
int ans = 0;
while (n >= 2990) { // 买贤者之书
n -= 2990;
ans += 400;
}
if (n >= 2300) { // 如果还有足够的金币,买博学者之怒
n -= 2300;
ans += 312; // 240 * 1.3 = 312
}
cout << ans << endl;
}
return 0;
}
```
相关问题
链接:https://ac.nowcoder.com/acm/contest/59840/D 来源:牛客网 Sheep_Li在打完训练赛后总是喜欢开一把王者,她最近练上了一个新英雄:不知火舞。为了提高二技能扇子的伤害,后期她会把所有其他装备卖掉换成贤者之书或者博学者之怒。 现在问题来了:假设当前她有N枚金币,她需要用这些金币去购买下面两种装备: 贤者之书:2990金币,获得400法术攻击。 博学者之怒:2300金币,获得240法术攻击,唯一被动:法术攻击提高30%. 例:如果Sheep_Li买了一个贤者之书和一个博学者之怒,那么她将获得(400+240)*130%=832. 其中,博学者之怒Sheep_Li只会购买一次(唯一被动),贤者之书无限购买。 假设没有购买装备数量限制,Sheep_Li最高可以获得多少法术攻击?
这是一道贪心问题。我们先尽可能购买博学者之怒,因为它的唯一被动可以让我们获得更多的法术攻击。当金币不足以购买博学者之怒时,我们再购买贤者之书。因为贤者之书可以无限购买,所以我们可以一直购买直到金币不足为止。
具体实现上,我们可以先购买一个博学者之怒,然后不断判断是否还有足够的金币去购买另一个博学者之怒。如果可以,就购买;如果不行了,就购买贤者之书直到金币不足。
以下是Python代码实现:
```python
n = int(input())
ans = 0
while n >= 2300:
ans += 552
n -= 2300
if n >= 2990:
n -= 2990
ans += 400
print(ans)
```
输入金币数量,然后按照上述算法求解并输出结果。
Sheep_Li在打完训练赛后总是喜欢开一把王者,她最近练上了一个新英雄:不知火舞。为了提高二技能扇子的伤害,后期她会把所有其他装备卖掉换成贤者之书或者博学者之怒。 现在问题来了:假设当前她有N枚金币,她需要用这些金币去购买下面两种装备: 贤者之书:2990金币,获得400法术攻击。 博学者之怒:2300金币,获得240法术攻击,唯一被动:法术攻击提高30%. 例:如果Sheep_Li买了一个贤者之书和一个博学者之怒,那么她将获得(400+240)*130%=832. 其中,博学者之怒Sheep_Li只会购买一次(唯一被动),贤者之书无限购买。 假设没有购买装备数量限制,Sheep_Li最高可以获得多少法术攻击? 输入描述: 第1行输入测试用例数量T(1<=T<=105) 第2-T+1行输入一个整数N(1<=109),代表初始金币数量。 输出描述: 对于每组测试用例,输出最高法术攻击. 示例1 输入 复制 4 2200 2500 6000 10000 输出 复制 0 312 832 1352 说明 对于用例3,Sheep_Li买了博学者之怒和一个贤者之书. 对于用例4,Sheep_Li买了博学者之怒和两个贤者之书.
这道题可以使用贪心算法来解决。因为贤者之书的攻击力比博学者之怒的攻击力高,所以我们优先选择买贤者之书。当我们买不起贤者之书时,再考虑是否购买博学者之怒。
具体的策略是,如果当前还有足够的金币可以购买贤者之书,则一直购买贤者之书,直到无法再购买为止。然后再判断是否还有足够的金币可以购买博学者之怒,如果可以购买,则购买一次。
下面是参考代码: