GESP认证C++编程真题解析 | 202309 四级

news/2026/1/18 22:05:08/文章来源:https://www.cnblogs.com/guolianggsta/p/19499238

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

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

适合人群:

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

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


编程题

B3869 进制转换

【题目来源】

洛谷:[B3869 GESP202309 四级] 进制转换 - 洛谷

【题目描述】

\(N\) 进制数指的是逢 \(N\) 进一的计数制。例如,人们日常生活中大多使用十进制计数,而计算机底层则一般使用二进制。除此之外,八进制和十六进制在一些场合也是常用的计数制(十六进制中,一般使用字母 A 至 F 表示十至十五;本题中,十一进制到十五进制也是类似的)。

在本题中,我们将给出 \(N\) 个不同进制的数。你需要分别把它们转换成十进制数。

【输入】

输入的第一行为一个十进制表示的整数 \(N\)。接下来 \(N\) 行,每行一个整数 \(K\),随后是一个空格,紧接着是一个 \(K\) 进制数,表示需要转换的数。保证所有 \(K\) 进制数均由数字和大写字母组成,且不以 \(0\) 开头。保证 \(K\) 进制数合法。

保证 \(N \le 1000\);保证 \(2 \le K \le 16\)

保证所有 \(K\) 进制数的位数不超过 \(9\)

【输出】

输出 \(N\) 行,每一个十进制数,表示对应 \(K\) 进制数的十进制数值。

【输入样例】

2
8 1362
16 3F0

【输出样例】

754
1008

【算法标签】

《洛谷 B3869 进制转换》 #进制# #GESP# #2023#

【代码详解】

#include <bits/stdc++.h>
using namespace std;#define int long long  // 使用长整型int n;  // 测试用例数量/*** 将指定进制的字符串转换为十进制整数* 支持2-16进制* @param x 进制(2-16)* @param t 要转换的字符串* @return 对应的十进制整数*/
int calc(int x, string t)
{int res = 0;  // 存储转换结果// 遍历字符串的每个字符for (int i = 0; i < t.size(); i++){if (t[i] <= '9'){// 处理数字字符 '0'-'9'// 霍纳法则:res = res * 进制 + 当前位的值res = res * x + (t[i] - '0');}else{// 处理字母字符 'A'-'F'// 将'A'-'F'转换为10-15res = res * x + (t[i] - 'A' + 10);}}return res;
}signed main()  // 因为使用了#define int long long
{// 输入测试用例数量cin >> n;// 处理每个测试用例while (n--){int k;      // 进制string s;   // 要转换的字符串cin >> k >> s;// 调用calc函数进行进制转换并输出结果cout << calc(k, s) << endl;}return 0;
}

【运行结果】

2
8 1362
754
16 3F0
1008

B3870 变长编码

【题目来源】

洛谷:[B3870 GESP202309 四级] 变长编码 - 洛谷

【题目描述】

小明刚刚学习了三种整数编码方式:原码、反码、补码,并了解到计算机存储整数通常使用补码。但他总是觉得,生活中很少用到 \(2^{31}-1\) 这么大的数,生活中常用的 \(0\sim 100\) 这种数也同样需要用 \(4\) 个字节的补码表示,太浪费了些。
热爱学习的小明通过搜索,发现了一种正整数的变长编码方式。这种编码方式的规则如下:

  1. 对于给定的正整数,首先将其表达为二进制形式。例如,\((0)_{\{10\}}=(0)_{\{2\}}\)\((926)_{\{10\}}=(1110011110)_{\{2\}}\)
  2. 将二进制数从低位到高位切分成每组 \(7\) bit,不足 \(7\)bit 的在高位用 \(0\) 填补。例如,\((0)_{\{2\}}\) 变为\(0000000\) 的一组,\((1110011110)_{\{2\}}\) 变为 \(0011110\)\(0000111\) 的两组。
  3. 由代表低位的组开始,为其加入最高位。如果这组是最后一组,则在最高位填上 \(0\),否则在最高位填上 \(1\)。于是,\(0\) 的变长编码为 \(00000000\) 一个字节, \(926\) 的变长编码为 \(10011110\)\(00000111\) 两个字节。

这种编码方式可以用更少的字节表达比较小的数,也可以用很多的字节表达非常大的数。例如,\(987654321012345678\) 的二进制为 \((0001101 \ 1011010 \ 0110110 \ 1001011 \ 1110100 \ 0100110 \ 1001000 \ 0010110 \ 1001110)_{\{2\}}\),于是它的变长编码为(十六进制表示) CE 96 C8 A6 F4 CB B6 DA 0D,共 \(9\) 个字节。

你能通过编写程序,找到一个正整数的变长编码吗?

【输入】

输入第一行,包含一个正整数 \(N\)。约定 \(0\le N \le 10^{18}\)

【输出】

输出一行,输出 \(N\) 对应的变长编码的每个字节,每个字节均以 \(2\) 位十六进制表示(其中, A-F 使用大写字母表示),两个字节间以空格分隔。

【输入样例】

0

【输出样例】

00

【算法标签】

《洛谷 B3870 变长编码》 #GESP# #2023#

【代码详解】

#include <bits/stdc++.h>
using namespace std;#define int long long
const int N = 1005;
int n;
string a[N];  // 存储分组后的二进制字符串/*** 十进制转二进制字符串* @param x 十进制整数* @return 二进制字符串*/
string DtoB(int x)
{string d = "0123456789ABCDEF";  // 数字字符表string ans = "";// 不断除以2,取余数while (x > 0){ans = d[x % 2] + ans;  // 余数转换为'0'或'1',加到字符串前面x /= 2;}return ans;
}/*** 二进制字符串转十进制* @param s 二进制字符串* @return 十进制整数*/
int BtoD(string s)
{int ans = 0;// 使用霍纳法则:ans = ans * 2 + 当前位for (int i = 0; i < s.size(); i++){ans = ans * 2 + (s[i] - '0');}return ans;
}/*** 十进制转十六进制字符串* @param x 十进制整数* @return 十六进制字符串(至少两位,不足补0)*/
string DtoH(long long x)
{string d = "0123456789ABCDEF", ans = "";// 特判0的情况if (x == 0) {return "0";  // 注意:这里返回"0",但下面有补0处理}// 不断除以16,取余数while (x > 0) {ans = d[x % 16] + ans;  // 余数转换为十六进制字符x /= 16;}// 如果结果只有一位,前面补0if (ans.length() == 1) {ans = "0" + ans;}return ans;
}signed main()
{cin >> n;// 特判输入为0的情况if (n == 0) {cout << "00" << endl;return 0;}// 1. 十进制转二进制string s = DtoB(n);// 2. 从低位到高位,每7位一组(最后一组可能不足7位)int cnt = 0;  // 当前组内计数int cur = 1;  // 当前组号for (int i = s.size() - 1; i >= 0; i--)  // 从低位(字符串末尾)开始{cnt++;a[cur] += s[i];  // 将当前位添加到当前组// 每7位一组if (cnt == 7){cur++;  // 开始新的一组cnt = 0;}}// 3. 最后一组如果不足7位,用0补齐while (a[cur].size() < 7){a[cur] += '0';}// 4. 为每组添加最高位(标识位)for (int i = 1; i < cur; i++)  // 前cur-1组,最高位为1(表示还有后续){a[i] += '1';}a[cur] += '0';  // 最后一组,最高位为0(表示结束)// 5. 反转每组字符串(因为是从低位开始构建的)for (int i = 1; i <= cur; i++){reverse(a[i].begin(), a[i].end());}// 6. 将每组8位二进制转换为十六进制输出for (int i = 1; i <= cur; i++){int t = BtoD(a[i]);      // 二进制转十进制// cout << "t " << t << endl;string s = DtoH(t);      // 十进制转十六进制cout << s << " ";        // 输出十六进制,以空格分隔}return 0;
}

【运行结果】

0
00

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1179576.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P1339 Heat Wave G

点击查看代码 #include<bits/stdc++.h> using namespace std; typedef pair<int,int> PII; const int N=3000; const int M=7000*2; int n,m,s,t; struct Edge{int to;int w;int ne; }edge[M]; int h[N]; …

P2910 Clear And Present Danger S

点击查看代码 #include<bits/stdc++.h> using namespace std;const int N=110; const int M=10010; int n,m; int p[N]; int dist[N][N]; long long ans;int main() {ios::sync_with_stdio(0),cin.tie(0);cin>…

职场晋升需要 AI 证书,选偏理论还是偏实操的更有用?

在职场晋升场景中&#xff0c;AI证书的价值需结合实用性判断。多数情况下&#xff0c;偏实操属性的证书更能适配企业“以结果为导向”的评估逻辑&#xff0c;其承载的技能可直接转化为工作效率与业务成果&#xff1b;理论类证书仅适合特定场景作为补充&#xff0c;难以成为晋升…

TCP 协议深度解析与实践:从零基础到精通

📚 学习路径:本文适合不同层次的读者🟢 小白级:了解网络基础、TCP 基本概念 🟡 初级:掌握 TCP 连接过程、Python Socket 编程 🟠 中级:理解 TCP 可靠性机制、实战应用 🔴 精通级:深入 TCP 内核机制、性…

小程序毕设选题推荐:基于springboot+微信小程序的校园竞赛管理系统【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

> STM32-200-多功能门禁人脸识别指纹识别RFID刷卡密码(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

STM32-200-多功能门禁人脸识别指纹识别RFID刷卡密码(设计源文件万字报告讲解)&#xff08;支持资料、图片参考_相关定制&#xff09;_文章底部可以扫码产品功能描述&#xff1a; 本系统由STM32F103C8T6单片机核心板、1.44寸TFT彩屏、&#xff08;无线蓝牙/无线WIFI/无线视频监控…

数据质量与主数据管理:确保企业核心数据准确

数据质量与主数据管理&#xff1a;确保企业核心数据准确 1. 引入与连接 1.1 引人入胜的开场 想象一下&#xff0c;一家大型零售企业计划推出一系列针对特定客户群体的促销活动。营销团队精心策划了方案&#xff0c;投入了大量资源进行宣传推广。然而&#xff0c;活动结束后却发…

51-C40-温湿度检测+上下限+加热+空调降温+加湿+除湿+手动+自动+OLED屏+声光报警+按键+(无线方式选择)(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

51-C40-温湿度检测上下限加热空调降温加湿除湿手动自动OLED屏声光报警按键(无线方式选择)51-C040B蓝牙无线-APP版: 51-C040W-WIFI无线-APP版: 51-C040CAN-视频监控WIFI无线-APP版: 产品功能描述&#xff1a; 本系统由51单片机最小系统电路、OLED屏、&#xff08;无线蓝牙/无线W…

数论2:gcd、lcm与exgcd

数论2:gcd、lcm与exgcdgcd:Greatest Common Divisor,最大公约数,即对于不全为0的整数p、q,存在一最大的整数r,使得r|p、r|q且对于任意整数s,s|p且s|q,有r>=s。 记作gcd(p,q),特别的,gcd(a,0) = |a| (a!=0…

假期schedule

写在前面 假期雅思是最重要的 计划安排 5.40-5.50 起床 6.00 - 7.00 口语一节词汇课 7.30 - 9.30 第一节回放 10.00 开始第二节回放看一点可能去吃饭 尽量不要午睡 下午最好1.30 可以开始胡小溪或邹为涛 一周要保证六天&#xff0c;六个下午在做研究 晚上晚饭之后看完一个雅思回…

计算机小程序毕设实战-基于SpringBoot+Vue的高校学科竞赛管理系统微信小程序基于springboot+微信小程序的院竞赛管理系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

day144—递归—平衡二叉树(LeetCode-110)

题目描述给定一个二叉树&#xff0c;判断它是否是 平衡二叉树 示例 1&#xff1a;输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;true示例 2&#xff1a;输入&#xff1a;root [1,2,2,3,3,null,null,4,4] 输出&#xff1a;false示例 3&#xff1a;输入&…

2026年市场可靠的活性炭箱优质厂家哪家靠谱,滤筒除尘器/旋风除尘器/活性炭箱/催化燃烧,活性炭箱生产商口碑排行 - 品牌推荐师

评测背景 随着环保政策持续收紧及工业废气治理需求激增,活性炭箱作为VOCs(挥发性有机物)治理的核心设备,其性能稳定性、技术适配性及服务能力成为用户选型的关键指标。为客观评估市场主流供应商的综合实力,本评测…

STM32单片机分享:智能鱼缸系统

目录 一、项目成品图片 二、项目功能简介 1.主要器件组成 2.功能详解介绍 三、项目原理图设计 四、项目PCB硬件设计 项目PCB图 五、项目程序设计 六、项目实验效果 ​编辑 七、项目包含内容 一、项目成品图片 哔哩哔哩视频链接&#xff1a; https://www.bilibili.c…

2026年国内可靠的活性炭箱制造厂家推荐排行榜,RTO/旋风除尘器/沸石转轮一体机/除尘器,活性炭箱公司推荐榜 - 品牌推荐师

在工业废气治理领域,活性炭箱作为VOCs(挥发性有机物)吸附净化环节的核心设备,直接影响企业排放达标率与环保合规成本。其吸附效率、结构稳定性及运维便捷性,已成为衡量设备性能的关键指标。本文聚焦河北清大环保机…

交通仿真软件:VISSIM_(22).交通仿真在城市规划中的应用

交通仿真在城市规划中的应用 1. 交通仿真概述 交通仿真是一种通过计算机模型来模拟实际交通系统运行情况的技术。它可以帮助城市规划师、交通工程师和政策制定者在虚拟环境中评估和优化交通系统的性能。交通仿真软件通过创建详细的交通网络模型&#xff0c;模拟车辆、行人和公共…

day145—递归—二叉树的右视图(LeetCode-199)

题目描述给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。示例 1&#xff1a;输入&#xff1a;root [1,2,3,null,5,null,4]输出&#xff1a;[1,3,4]解释&#xff1a;示例 2&#xf…

STM32单片机分享:智能书桌系统

目录 一、项目成品图片 二、项目功能简介 1.主要器件组成 2.功能详解介绍 三、项目原理图设计 四、项目PCB硬件设计 项目PCB图 五、项目程序设计 六、项目实验效果 ​编辑 七、项目包含内容 一、项目成品图片 哔哩哔哩视频链接&#xff1a; https://www.bilibili.c…

理性选择RTO:基于用户反馈的供货商横向评测,沸石转轮/活性炭箱/RTO/沸石转轮一体机,RTO源头厂家排行榜 - 品牌推荐师

引言 在工业废气治理领域,RTO(蓄热式废气焚烧设备)作为处理VOCs(挥发性有机物)的关键设备,其性能与可靠性直接关系到企业能否稳定达标排放、实现绿色生产与可持续发展。面对市场上众多的RTO设备供应商,如何选择…

2026苏州新房装修大揭秘:这些服务优质的公司你不能错过! - 品牌测评鉴赏家

2026苏州新房装修大揭秘:这些服务优质的公司你不能错过!一.装修前的准备 装修新房是一件令人兴奋又充满挑战的大事,它承载着我们对未来美好生活的憧憬。而在苏州这个充满韵味的城市,选择一家服务好的新房装修公司至…