GESP 2025 年 12 月二级 C++ 环保能量球
题目描述
小杨最近在玩一个环保主题的游戏。在游戏中,小杨每行走 1 公里就可以获得 1 点'环保能量'。
为了激励玩家,游戏设置了'里程奖励':小杨每行走 x 公里,游戏就会额外奖励 1 点能量。
现在已知小杨总共行走了 n 公里,请你帮他计算,他一共能获得多少点环保能量?
输入格式
第一行包含一个正整数 t,代表测试数据组数。
对于每组测试数据:
- 第一行包含一个正整数 n,代表行走的公里数。
- 第二行包含一个正整数 x,代表奖励触发的间隔。
输出格式
对于每组测试数据,输出一个整数,代表小杨获得的环保能量总数。
输入输出样例 #1
输入 #1
3 5 2 10 3 2 5
输出 #1
7 13 2
说明/提示
样例解释
- 对于第 1 组数据,n=5, x=2:小杨行走获得 5 点能量。此外,他在第 2 公里和第 4 公里时各获得 1 点额外奖励,总共 5+2=7 点。
- 对于第 2 组数据,n=10, x=3:行走获得 10 点。他在第 3、6、9 公里时各获得 1 点额外奖励,总共 10+3=13 点。
- 对于第 3 组数据,n=2, x=5:行走获得 2 点。由于行走路程不足 5 公里,没有额外奖励,总共 2 点。
数据范围
对于全部数据,保证:1≤t≤100,1≤n,x≤1000。
一、题目分析
核心需求
计算小杨行走 n 公里后获得的总环保能量,总能量由两部分组成:
- 基础能量:每行走 1 公里获得 1 点,即基础能量值等于行走公里数 n;
- 额外奖励能量:每行走 x 公里奖励 1 点,额外奖励的数量为 n 中包含多少个完整的 x(即 n 除以 x 的整数部分)。
关键信息
- 输入包含 t 组测试数据,每组数据对应 n(行走公里数)和 x(奖励触发间隔);
- 数据范围:1≤t≤100,1≤n,x≤1000,无需考虑大数溢出问题;
- 额外奖励的计算规则:仅统计完整的 x 公里间隔(如 n=5、x=2 时,仅包含 2 个完整间隔,奖励 2 点)。
二、解题思路
- 读取测试组数:首先输入测试用例的数量 t,确定需要循环处理的次数;
- 循环处理每组数据:对于每组测试数据,依次读取 n 和 x;
- 计算总能量:
- 基础能量:n(固定不变);
- 额外奖励能量:使用整数除法 n/x(正好对应'完整间隔数'的要求);
- 总能量 = 基础能量 + 额外奖励能量,即 n + n/x;
- 输出结果:每组数据计算完成后,直接输出总能量即可。
三、代码解析
#include <iostream>
using namespace std;
int main {
t, x, n;
cin >> t;
( i = ; i <= t; i++) {
cin >> n >> x;
cout << n + n / x << endl;
}
;
}

