news 2026/4/18 15:21:12

GESP认证C++编程真题解析 | 202403 五级

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GESP认证C++编程真题解析 | 202403 五级

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

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

适合人群:

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

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


编程题

B3968 成绩排序

【题目来源】

洛谷:B3968 [GESP202403 五级] 成绩排序 - 洛谷

【题目描述】

有 名同学,每名同学有语文、数学、英语三科成绩。你需要按如下规则对所有同学的成绩从高到低排序:

  1. 比较总分,高者靠前;
  2. 如果总分相同,则比较语文和数学两科总分,高者靠前;
  3. 如果仍相同,则比较语文和数学两科的最高分,高者靠前;
  4. 如果仍相同,则二人并列。

你需要输出每位同学的排名,如遇x xx人并列,则他们排名相同,并留空后面的x − 1 x-1x1个名次。例如,有3 33名同学并列第1 11,则后一名同学自动成为第4 44名。

【输入】

第一行一个整数N NN,表示同学的人数。

接下来N NN行,每行三个非负整数c i , m i , e i c_i,m_i,e_ici,mi,ei分别表示该名同学的语文、数学、英语成绩。

【输出】

输出N NN行,按输入同学的顺序,输出他们的排名。

注意:请不要按排名输出同学的序号,而是按同学的顺序输出他们各自的排名

【输入样例】

6 140 140 150 140 149 140 148 141 140 141 148 140 145 145 139 0 0 0

【输出样例】

1 3 4 4 2 6

【算法标签】

《洛谷 B3968 成绩排序》 #模拟# #排序# #GESP# #2024#

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;intn;// 学生人数// 学生结构体,存储各科成绩和相关信息structStu{intyw,sx,yy;// 语文、数学、英语成绩inttot;// 总分intys;// 语文+数学总分intmax_ys;// 语文和数学中的最高分intid;// 学生编号intrk;// 最终排名};Stu stu[10005];// 学生数组// 排序比较函数1:用于成绩排序boolcmp(Stu x,Stu y){if(x.tot!=y.tot)returnx.tot>y.tot;// 规则1:总分高的在前elseif(x.ys!=y.ys)returnx.ys>y.ys;// 规则2:语文+数学高的在前elseif(x.max_ys!=y.max_ys)returnx.max_ys>y.max_ys;// 规则3:语文或数学单科高的在前elsereturnx.id<y.id;// 规则4:编号小的在前}// 排序比较函数2:用于按学生编号排序输出boolcmp2(Stu x,Stu y){returnx.id<y.id;}intmain(){cin>>n;// 输入学生人数// 输入并处理每个学生的成绩数据for(inti=1;i<=n;i++){intci,mi,ei;cin>>ci>>mi>>ei;stu[i].id=i;// 记录学生编号stu[i].yw=ci;// 语文成绩stu[i].sx=mi;// 数学成绩stu[i].yy=ei;// 英语成绩stu[i].ys=ci+mi;// 语文+数学总分stu[i].max_ys=max(ci,mi);// 语文或数学最高分stu[i].tot=ci+mi+ei;// 三科总分}// 第一次排序:按成绩规则排序sort(stu+1,stu+n+1,cmp);intcnt=1;// 排名计数器// 计算每个学生的实际排名(处理并列情况)for(inti=1;i<=n;i++){// 检查是否与前一名学生成绩完全相同if(i>1&&stu[i].tot==stu[i-1].tot&&stu[i].ys==stu[i-1].ys&&stu[i].max_ys==stu[i-1].max_ys){stu[i].rk=stu[i-1].rk;// 并列排名}else{stu[i].rk=cnt;// 新排名}cnt++;// 排名计数器递增}// 第二次排序:按学生编号排序,方便输出sort(stu+1,stu+n+1,cmp2);// 输出每个学生的排名for(inti=1;i<=n;i++){cout<<stu[i].rk<<endl;}return0;}

【运行结果】

6 140 140 150 140 149 140 148 141 140 141 148 140 145 145 139 0 0 0 1 3 4 4 2 6

B3969 B-smooth 数

【题目来源】

洛谷:B3969 [GESP202403 五级] B-smooth 数 - 洛谷

【题目描述】

小杨同学想寻找一种名为B BB-smooth 数的正整数。

如果一个正整数的最大质因子不超过B BB,则该正整数为B BB-smooth 数。

小杨同学想知道,对于给定的n nnB BB,有多少个不超过n nnB BB-smooth 数。

【输入】

第一行包含两个正整数n nnB BB,含义如题面所示。

【输出】

输出一个非负整数,表示不超过n nnB BB-smooth 数的数量。

【输入样例】

10 3

【输出样例】

7

【算法标签】

《洛谷 B3969 [GESP202403 五级] B-smooth 数》 #素数判断,质数,筛法# #GESP# #2024#

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;intn,B,ans,cnt;intmaxPrime[1000005],prime[1000005],notPrime[1000005];// 欧拉筛法预处理所有数的最大质因子voidgetPrime(){prime[1]=1;// 1不是质数maxPrime[1]=1;// 1的最大质因子设为1for(inti=2;i<=1000000;i++){if(!notPrime[i]){// 如果是质数prime[cnt++]=i;// 存入质数数组maxPrime[i]=i;// 质数的最大质因子是其本身}// 用当前数和已知质数筛去合数for(intj=0;j<cnt&&i*prime[j]<=1000000;j++){notPrime[i*prime[j]]=1;// 标记为合数// 计算i*prime[j]的最大质因子maxPrime[i*prime[j]]=max(prime[j],maxPrime[i]);// 关键优化:保证每个合数只被最小质因子筛一次if(i%prime[j]==0){break;}}}}intmain(){cin>>n>>B;// 输入范围n和阈值BgetPrime();// 预处理所有数的最大质因子// 统计1到n中最大质因子不超过B的数的个数for(inti=1;i<=n;i++){if(maxPrime[i]<=B){ans++;}}cout<<ans<<endl;// 输出结果return0;}
#include<bits/stdc++.h>usingnamespacestd;intn,B,cnt,cur;intmaxPrime[1000005],prime[1000005];boolflag[1000005];// 埃拉托斯特尼筛法(埃氏筛)预处理最大质因子voidgetPrime(){memset(flag,true,sizeof(flag));// 初始化为true,表示都是质数flag[0]=flag[1]=false;// 0和1不是质数maxPrime[1]=1;// 1的最大质因子设为1for(inti=2;i<=n;i++){if(flag[i]){// 如果i是质数prime[++cur]=i;// 存入质数数组maxPrime[i]=i;// 质数的最大质因子是其本身// 标记i的所有倍数为合数for(intj=2*i;j<=n;j+=i){flag[j]=false;// 标记为合数maxPrime[j]=i;// 更新其最大质因子为i}}}}intmain(){cin>>n>>B;// 输入范围n和阈值BgetPrime();// 预处理最大质因子// 统计1到n中最大质因子不超过B的数的个数for(inti=1;i<=n;i++){if(maxPrime[i]<=B){cnt++;}}cout<<cnt<<endl;// 输出结果return0;}

【运行结果】

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

【单片机毕业设计】【dz-1151】基于单片机的风力发电控制系统设计

一、功能简介项目名&#xff1a;基于单片机的风力发电控制系统设计 项目编号&#xff1a;dz-1151 单片机类型&#xff1a;STM32F103C8T6 具体功能&#xff1a; 1、通过风速检测模块检测当前环境的风速&#xff0c;通过风速给锂电池充电&#xff1b; 2、通过电压检测模块检测当前…

作者头像 李华
网站建设 2026/4/18 1:48:09

【单片机毕业设计】【dz-1153】基于单片机的泳池环境监测系统

一、功能简介项目名&#xff1a;基于单片机的泳池环境监测系统 项目编号&#xff1a;dz-1153 单片机类型&#xff1a;STM32F103C8T6 具体功能&#xff1a; 1、通过防水式DS18B20测量水温&#xff0c;当水温低于设置最小值&#xff0c;则开始加热&#xff0c;直到加热到设置最大…

作者头像 李华
网站建设 2026/4/18 1:51:52

α-MSH (11-13) ;Lys-Pro-Val-NH2

一、基础性质英文名称&#xff1a;α-MSH (11-13)&#xff1b;Lys-Pro-Val-NH₂ Peptide&#xff1b;α-MSH C-terminal tripeptide中文名称&#xff1a;α- 促黑素细胞激素&#xff08;11-13&#xff09;片段&#xff1b;α-MSH C 端 3 肽&#xff1b;KPV 抗炎短肽多肽序列&am…

作者头像 李华
网站建设 2026/4/18 1:51:27

联想设备相机异常?台式 / 笔记本 / ThinkPad 通用排查指南来了!

不管是用联想台式机、ThinkCentre 办公视频会议&#xff0c;还是靠笔记本、ThinkPad 进行线上学习、直播创作&#xff0c;相机 / 摄像头都是不可或缺的核心设备。但很多用户都遇到过让人崩溃的相机异常问题&#xff1a;视频通话时突然黑屏无画面、摄像头无法被软件识别、拍摄画…

作者头像 李华
网站建设 2026/4/18 1:50:24

计算机毕设java校园垃圾分类回收系统 基于Java的校园智能垃圾分类与回收平台 学校垃圾分拣与回收管理系统的Java实现

计算机毕设java校园垃圾分类回收系统7u27h9&#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着环保意识的增强和垃圾分类政策的推行&#xff0c;校园垃圾分类回收工作变得愈发重…

作者头像 李华
网站建设 2026/4/18 1:51:41

模拟内存分配器

调用mm_malloc函数分配一个112字节的块&#xff0c;存入一个字符串&#xff0c;统计该字符串的长度&#xff0c;最后调用mm_free函数释放申请的块。#include <stdio.h> #include <errno.h> #include <stddef.h> #include <stdlib.h> #include <stri…

作者头像 李华