文章

【GESP】C++ 二级真题解析,[2025年12月]第一题环保能量球

GESP C++ 2025年12月,二级真题第一题,考察循环语句应用,应该算比较简单。题目难度⭐☆☆☆☆。

第一题,环保能量球

题目要求

题目描述

环保能量球


题目分析

1. 题意理解

题目要求计算走路获得的“环保能量球”总数。规则非常简单直观:

  • 基础奖励:每走 1 公里,获得 1 个能量球。
  • 额外奖励:每累计走满 $x$ 公里,额外获得 1 个能量球。

我们需要计算走 $n$ 公里后,总共能获得多少个能量球。

2. 解题思路

根据题目规则,我们可以将总能量球分为两部分计算:

  1. 基础部分:走了 $n$ 公里,直接获得 $n$ 个能量球。
  2. 奖励部分:每 $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),考试认证学员交流,互帮互助

GESP/CSP 认证学习微信公众号
GESP/CSP 认证学习微信公众号
本文由作者按照 CC BY-NC-SA 4.0 进行授权