news 2026/9/9 17:27:03

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/9/5 9:41:57

揭秘 Socket 缓冲区与数据封装

一、 两个“替身”:监听与通信描述符的内核差异 虽然 lfd (监听) 和 cfd (通信) 都是文件描述符,它们在内核里对应的缓冲区功能却大相径庭。 1. 监听描述符 (Listening FD) 读缓冲区:用来存“人”的。当有客户端发起连接(完成三次握手)时,内核会把这个连接请求放进读缓…

作者头像 李华
网站建设 2026/8/29 8:04:06

零样本分类标签设计:如何定义有效类别?

零样本分类标签设计&#xff1a;如何定义有效类别&#xff1f; 1. 引言&#xff1a;AI 万能分类器的兴起与挑战 随着自然语言处理技术的不断演进&#xff0c;传统文本分类方法依赖大量标注数据进行模型训练的模式正逐渐被更灵活、高效的方案所替代。在这一背景下&#xff0c;…

作者头像 李华
网站建设 2026/9/3 0:22:19

零样本分类技术解析:StructBERT的预训练优势

零样本分类技术解析&#xff1a;StructBERT的预训练优势 1. 引言&#xff1a;AI 万能分类器的时代来临 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;文本分类一直是核心任务之一。传统方法依赖大量标注数据进行监督学习&#xff0c;但在实际业务中&#xff0c…

作者头像 李华
网站建设 2026/9/3 0:15:56

ResNet18部署案例:教育场景中的物体识别应用

ResNet18部署案例&#xff1a;教育场景中的物体识别应用 1. 引言&#xff1a;通用物体识别在教育场景的价值 随着人工智能技术的普及&#xff0c;通用物体识别正逐步融入教育信息化体系。从智能教学辅助到学生自主探究项目&#xff0c;图像分类能力为课堂带来了全新的互动方式…

作者头像 李华
网站建设 2026/9/5 17:14:37

Mod Engine 2终极指南:5分钟打造专属魂类游戏世界

Mod Engine 2终极指南&#xff1a;5分钟打造专属魂类游戏世界 【免费下载链接】ModEngine2 Runtime injection library for modding Souls games. WIP 项目地址: https://gitcode.com/gh_mirrors/mo/ModEngine2 还在为游戏体验单一而烦恼吗&#xff1f;想要在《艾尔登法…

作者头像 李华
网站建设 2026/9/3 18:12:35

DIY Layout Creator:高效电路设计工具完全指南

DIY Layout Creator&#xff1a;高效电路设计工具完全指南 【免费下载链接】diy-layout-creator multi platform circuit layout and schematic drawing tool 项目地址: https://gitcode.com/gh_mirrors/di/diy-layout-creator 还在为复杂的电路设计软件而头疼吗&#x…

作者头像 李华