题解:P12170 [蓝桥杯 2025 省 Python B] 攻击次数
XsIeEiKcEk · · 题解
本站蓝桥杯 2025 省赛测试数据均为洛谷自造,与官方数据可能存在差异,仅供学习参考。 【2025-04-13 13:05】本题题目有歧义,根据多数用户理解我们修改了数据,目前洛谷数据判定为:
3 个英雄只要能攻击就一起攻击。如果3 个英雄只能选择能攻击的中攻击最高的,答案为181 。
解法
根据题意模拟,用多个 if
来判断回合数是否为奇数、
CODE
若你的想法是只要能攻击就一起攻击,模拟代码应该是:
#include<iostream>
using namespace std;
int main(){
int hp=2025,hh=1;
for(;hp>0;hh++){
int sum=5;
if(hh%2==1)sum+=15;//判断,下同
else sum+=2;
if(hh%3==1)sum+=2;
else if(hh%3==2)sum+=10;
else sum+=7;
hp-=sum;//减去
}
cout<<--hh;//注意要减1
return 0;
}
若你的想法是只能选择能攻击的中攻击最高的,模拟代码:
#include<iostream>
using namespace std;
int main(){
int hp=2025,hh=1;
for(;hp>0;hh++){
int sum=5;
if(hh%2==1)sum=max(sum,15);//选取最大值,下同
else sum=max(sum,2);
if(hh%3==1)sum=max(sum,2);
else if(hh%3==2)sum=max(sum,10);
else sum=max(sum,7);
hp-=sum;
}
cout<<--hh;
return 0;
}