【GESP】C++ 二级真题解析,[2025年12月]第一题环保能量球
GESP C++ 2025年12月,二级真题第一题,考察循环语句应用,应该算比较简单。题目难度⭐☆☆☆☆。
第一题,环保能量球
题目要求
题目描述
题目分析
1. 题意理解
题目要求计算走路获得的“环保能量球”总数。规则非常简单直观:
- 基础奖励:每走 1 公里,获得 1 个能量球。
- 额外奖励:每累计走满 $x$ 公里,额外获得 1 个能量球。
我们需要计算走 $n$ 公里后,总共能获得多少个能量球。
2. 解题思路
根据题目规则,我们可以将总能量球分为两部分计算:
- 基础部分:走了 $n$ 公里,直接获得 $n$ 个能量球。
- 奖励部分:每 $x$ 公里奖励 1 个。计算 $n$ 里面包含了多少个完整的 $x$,即做除法 $n / x$。在 C++ 中,整数除法会自动向下取整(舍去小数部分),正好符合“每满 $x$ 公里”的含义。
3. 算法实现
- 输入:首先读取测试组数 $t$。对于每组数据,读取行走的公里数 $n$ 和奖励间隔 $x$。
- 计算:使用公式
ans = n + (n / x)。 - 输出:输出计算结果。
4. 复杂度分析
- 时间复杂度:对于每组数据,仅进行一次加法和除法运算,复杂度为 $O(1)$。总时间复杂度为 $O(t)$。
- 空间复杂度:仅使用几个变量存储输入,复杂度为 $O(1)$。
示例代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
/**
* GESP 2025年12月 二级编程题 T1: 环保能量球
*
* 题目核心:
* 1. 基础分:走 n 公里得 n 分。
* 2. 奖励分:每走 x 公里额外得 1 分。
*
* 逻辑:总分 = n + (n / x)
*/
int main() {
int t;
std::cin >> t; // 读取测试组数
while (t--) {
int n, x;
std::cin >> n >> x;
// n 公里基础能量 + (n/x) 公里奖励能量
// C++ 整数除法自动向下取整,符合题目要求
std::cout << n + (n / x) << std::endl;
}
return 0;
}
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
GESP 学习专题站:GESP WIKI
“luogu-”系列题目可在洛谷题库进行在线评测。
“bcqm-”系列题目可在编程启蒙题库进行在线评测。
欢迎加入:Java、C++、Python技术交流QQ群(982860385),大佬免费带队,有问必答
欢迎加入:C++ GESP/CSP认证学习QQ频道,考试资源总结汇总
欢迎加入:C++ GESP/CSP学习交流QQ群(688906745),考试认证学员交流,互帮互助
本文由作者按照 CC BY-NC-SA 4.0 进行授权

