news 2026/5/15 21:13:43

GESP认证C++编程真题解析 | B4050 [GESP202409 五级] 挑战怪物

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GESP认证C++编程真题解析 | B4050 [GESP202409 五级] 挑战怪物

​欢迎大家订阅我的专栏:算法题解:C++与Python实现!
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!

专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。

适合人群:

  • 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
  • 希望系统学习C++/Python编程的初学者
  • 想要提升算法与编程能力的编程爱好者

附上汇总帖:GESP认证C++编程真题解析 | 汇总


【题目描述】

小杨正在和一个怪物战斗,怪物的血量为h hh,只有当怪物的血量恰好为0 00时小杨才能够成功击败怪物。

小杨有两种攻击怪物的方式:

  • 物理攻击。假设当前为小杨第i ii次使用物理攻击,则会对怪物造成2 i − 1 2^{i-1}2i1点伤害。
  • 魔法攻击。小杨选择任意一个质数x xxx xx不能超过怪物当前血量),对怪物造成x xx点伤害。由于小杨并不擅长魔法,他只能使用至多一次魔法攻击。

小杨想知道自己能否击败怪物,如果能,小杨想知道自己最少需要多少次攻击。

【输入】

第一行包含一个正整数t tt,代表测试用例组数。

接下来是t tt组测试用例。对于每组测试用例,第一行包含一个正整数h hh,代表怪物血量。

【输出】

对于每组测试用例,如果小杨能够击败怪物,输出一个整数,代表小杨需要的最少攻击次数,如果不能击败怪物,输出− 1 -11

【输入样例】

3 6 188 9999

【输出样例】

2 4 -1

【代码详解】

《洛谷 B4050 挑战怪物》 #贪心# #数论# #GESP# #2024#

#include<bits/stdc++.h>usingnamespacestd;vector<int>prime;// 用于存储所有素数boolis_prime[100010];// 标记数组,用于判断一个数是否为素数// 埃氏筛法,生成从2到n的所有素数voidEratosthenes(intn){memset(is_prime,true,sizeof(is_prime));// 初始化标记数组,全设为true(假定全是素数)is_prime[0]=is_prime[1]=false;// 0和1不是素数for(inti=2;i<=n;i++){if(is_prime[i]){// 如果当前数字是素数prime.push_back(i);// 将其加入素数列表for(intj=2*i;j<=n;j+=i)// 将该素数的倍数全部标记为非素数is_prime[j]=false;}}}intmain(){Eratosthenes(100000);// 生成最多到100000的所有素数intt;// 测试用例数量cin>>t;while(t--){inttmp=1;// 初始攻击力intx;// 怪物的血量cin>>x;intans=0;// 攻击次数while(true){if(is_prime[x]){// 如果当前血量是素数ans++;// 增加一次攻击break;// 结束循环}x-=tmp;// 使用物理攻击,减少血量ans++;// 增加一次攻击次数if(x<=0){// 如果血量小于等于0if(x<0)ans=-1;// 如果血量小于0,设置结果为-1表示失败break;// 结束循环}tmp*=2;// 每次攻击后,攻击力翻倍}cout<<ans<<endl;// 输出结果}return0;}

【运行结果】

3 6 2 188 4 9999 -1
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/15 7:18:30

3步彻底解决Calibre中文路径乱码:路径保护插件完整使用指南

3步彻底解决Calibre中文路径乱码&#xff1a;路径保护插件完整使用指南 【免费下载链接】calibre-do-not-translate-my-path Switch my calibre library from ascii path to plain Unicode path. 将我的书库从拼音目录切换至非纯英文&#xff08;中文&#xff09;命名 项目地…

作者头像 李华
网站建设 2026/5/11 23:39:30

WeNet语音识别系统深度解析:从架构设计到实战部署的完整指南

WeNet语音识别系统深度解析&#xff1a;从架构设计到实战部署的完整指南 【免费下载链接】wenet Production First and Production Ready End-to-End Speech Recognition Toolkit 项目地址: https://gitcode.com/gh_mirrors/we/wenet 想要快速掌握工业级语音识别系统的构…

作者头像 李华
网站建设 2026/5/11 23:39:39

UEDumper深度解析:一站式虚幻引擎逆向分析工具实战指南

UEDumper深度解析&#xff1a;一站式虚幻引擎逆向分析工具实战指南 【免费下载链接】UEDumper The most powerful Unreal Engine Dumper and Editor for UE 4.19 - 5.3 项目地址: https://gitcode.com/gh_mirrors/ue/UEDumper UEDumper作为当前最强大的虚幻引擎Dumper工…

作者头像 李华
网站建设 2026/5/13 12:47:17

完整指南:让Windows任务栏变身萌宠跑道的RunCat应用

完整指南&#xff1a;让Windows任务栏变身萌宠跑道的RunCat应用 【免费下载链接】RunCat_for_windows A cute running cat animation on your windows taskbar. 项目地址: https://gitcode.com/GitHub_Trending/ru/RunCat_for_windows 还在为枯燥的Windows任务栏感到乏味…

作者头像 李华
网站建设 2026/5/9 20:10:58

ClickShow鼠标点击特效:5分钟掌握终极可视化操作技巧

ClickShow鼠标点击特效&#xff1a;5分钟掌握终极可视化操作技巧 【免费下载链接】ClickShow 鼠标点击特效 项目地址: https://gitcode.com/gh_mirrors/cl/ClickShow 你是否在屏幕录制时遇到观众看不清鼠标操作的尴尬&#xff1f;是否在远程演示中反复解释点击位置&…

作者头像 李华
网站建设 2026/5/10 12:49:04

ClickShow鼠标点击特效工具:5分钟快速上手指南

ClickShow鼠标点击特效工具&#xff1a;5分钟快速上手指南 【免费下载链接】ClickShow 鼠标点击特效 项目地址: https://gitcode.com/gh_mirrors/cl/ClickShow 还在为屏幕录制时观众看不清鼠标操作而烦恼&#xff1f;ClickShow鼠标点击特效工具正是你的完美解决方案&…

作者头像 李华