202512-环保能量球
GESP C++ 2025年12月,二级真题第一题,考察循环语句应用,应该算比较简单。题目难度⭐☆☆☆☆。
第一题,环保能量球
题目要求
题目描述

题目分析
1. 题意理解
题目要求计算走路获得的“环保能量球”总数。规则非常简单直观:
- 基础奖励:每走 1 公里,获得 1 个能量球。
- 额外奖励:每累计走满 公里,额外获得 1 个能量球。
我们需要计算走 公里后,总共能获得多少个能量球。
2. 解题思路
根据题目规则,我们可以将总能量球分为两部分计算:
- 基础部分:走了 公里,直接获得 个能量球。
- 奖励部分:每 公里奖励 1 个。计算 里面包含了多少个完整的 ,即做除法 。在 C++ 中,整数除法会自动向下取整(舍去小数部分),正好符合“每满 公里”的含义。
3. 算法实现
- 输入:首先读取测试组数 。对于每组数据,读取行走的公里数 和奖励间隔 。
- 计算:使用公式
ans = n + (n / x)。 - 输出:输出计算结果。
4. 复杂度分析
- 时间复杂度:对于每组数据,仅进行一次加法和除法运算,复杂度为 。总时间复杂度为 。
- 空间复杂度:仅使用几个变量存储输入,复杂度为 。
示例代码
#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;
}本文由coderli.com原创,按照CC BY-NC-SA 4.0 进行授权
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
“luogu-”系列题目可在 洛谷题库 在线评测。
“bcqm-”系列题目可在 编程启蒙题库 在线评测。
GESP/CSP认证交流QQ群: 688906745
GESP/CSP 认证学习微信公众号

最后更新于