文库 其他 电子学会真题

202503 C/C++语言编程等级考试 5级真题

五级 少儿编程真题 C++语言等级考试 电子学会真题 DOCX   6页   下载0   2025-04-17   浏览5   收藏0   点赞0   评分-   3632字   免费文档
温馨提示:当前文档最多只能预览 2 页,若文档总页数超出了 2 页,请下载原文档以浏览全部内容。
202503 C/C++语言编程等级考试 5级真题 第1页
202503 C/C++语言编程等级考试 5级真题 第2页
剩余4页未读, 下载浏览全部
青少年软件编程(C语言)等级考试试卷( 五 级) 1、 结绳 给定一段一段的绳子,你需要把它们串成一条绳。每次串连的时候,是把两段绳子对折,再如下图所示套接在一起。这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另一段绳子串连。每次串连后,原来两段绳子的长度就会减半。 给定 n 段绳子的长度,你需要找出它们能串成的绳子的最大长度。 时间限制:1000 内存限制:65536 输入 每个输入包含 1 个测试用例。每个测试用例第 1 行给出正整数 n (2 ≤ n ≤ 10 4 );第 2 行给出 n 个正整数,即原始绳段的长度,数字间以空格分隔。所有整数都不超过10 4 。 输出 在一行中输出能够串成的绳子的最大长度。结果向下取整,即取为不超过最大长度的最近整数。 样例输入 8 10 15 12 3 4 13 1 15 样例输出 14 参考代码: #include <iostream> #include <queue> using namespace std; int main() { int n; cin >> n; priority_queue<int, vector<int>, greater<int>> pq; for (int i = 0, len; i < n; ++i) { cin >> len; pq.push(len); } int total = 0; while (pq.size() > 1) { int a = pq.top(); pq.pop(); int b = pq.top(); pq.pop(); int newLen = (a + b) / 2; total += newLen; pq.push(newLen); } cout << total; } 2、 从A到B 我们来做一个数字游戏,通过一系列操作把一个数字 A 变成另一个数字 B。设当前数字是 X,规定每次操作可以从以下 3 种里面选一种进行: - X = X + 1 - X = X - 1 - X = X × N 你的任务就是求出从 A 变成 B 至少需要多少步。 时间限制:1000 内存限制:65536 输入 每组输入包含多个测试用例。先给出一个整数 K(≤ 10),为测试用例的个数。随后 K 行,每行给出一个测试用例的三个整数:A、B、N,其中 -10 5  ≤ A, B ≤ 10 5 ,1 < N < 10。同行数字间以空格分隔。 输出 对每个测试用例,在一行中输出从 A 变成 B 至少需要多少步。 样例输入 3 3 11 2 -5 -12 3 -2 1000 7 样例输出 3 2 13 提示 样例解释: 第 1 组:(3 × 2 × 2)-1=11 第 2 组:(-5+1) × 3 = -12 第 3 组:(((-2+1+1+1+1+1)×7-1)×7+1+1+1)×7-1 = 1000 参考代码: #include <iostream> #include <queue> #include <unordered_map> using namespace std; int bfs(int A, int B, int N) { unordered_map<int, int> dist = {{A, 0}}; queue<int> q = {A}; whil
202503C语言五级
下载提示

下载及版权说明:6547网文库内容来自网络及各平台公开内容(属于用户上传,不保证正确性,只做参考),旨在帮助同学们学习少儿编程相关知识及内容,仅限内部学习及使用,以分享为主,下载本文档之后请合法使用相关、真题、素材、课件、教程等内容,若内容存在侵权,请进行 举报 及查看 免责声明