CCF-GESP计算机学会等级考试2025年12月二级C++T1 环保能量球
B4447 [GESP202512 二级] 环保能量球
题目描述
小杨最近在玩一个环保主题的游戏。在游戏中,小杨每行走 1 公里就可以获得 1 点“环保能量”。
为了激励玩家,游戏设置了“里程奖励”:小杨每行走 xxx 公里,游戏就会额外奖励 1 点能量。
现在已知小杨总共行走了 nnn 公里,请你帮他计算,他一共能获得多少点环保能量?
输入格式
第一行包含一个正整数 ttt,代表测试数据组数。
对于每组测试数据:
- 第一行包含一个正整数 nnn,代表行走的公里数。
- 第二行包含一个正整数 xxx,代表奖励触发的间隔。
输出格式
对于每组测试数据,输出一个整数,代表小杨获得的环保能量总数。
输入输出样例 #1
输入 #1
3 5 2 10 3 2 5 输出 #1
7 13 2 说明/提示
样例解释
- 对于第 1 组数据,n=5,x=2n = 5, x = 2n=5,x=2:小杨行走获得 555 点能量。此外,他在第 222 公里和第 444 公里时各获得 111 点额外奖励,总共 5+2=75 + 2 = 75+2=7 点。
- 对于第 2 组数据,n=10,x=3n = 10, x = 3n=10,x=3:行走获得 101010 点。他在第 333、666、999 公里时各获得 111 点额外奖励,总共 10+3=1310 + 3 = 1310+3=13 点。
- 对于第 3 组数据,n=2,x=5n = 2, x = 5n=2,x=5:行走获得 222 点。由于行走路程不足 555 公里,没有额外奖励,总共 222 点。
数据范围
对于全部数据,保证:1≤t≤1001 \leq t \leq 1001≤t≤100,1≤n,x≤10001 \leq n, x \leq 10001≤n,x≤1000。
一、题目分析
核心需求
计算小杨行走 nnn 公里后获得的总环保能量,总能量由两部分组成:
- 基础能量:每行走1公里获得1点,即基础能量值等于行走公里数 nnn;
- 额外奖励能量:每行走 xxx 公里奖励1点,额外奖励的数量为 nnn 中包含多少个完整的 xxx(即 nnn 除以 xxx 的整数部分)。
关键信息
- 输入包含 ttt 组测试数据,每组数据对应 nnn(行走公里数)和 xxx(奖励触发间隔);
- 数据范围:1≤t≤1001 \leq t \leq 1001≤t≤100,1≤n,x≤10001 \leq n, x \leq 10001≤n,x≤1000,无需考虑大数溢出问题;
- 额外奖励的计算规则:仅统计完整的 xxx 公里间隔(如 n=5n=5n=5、x=2x=2x=2 时,仅包含2个完整间隔,奖励2点)。
二、解题思路
- 读取测试组数:首先输入测试用例的数量 ttt,确定需要循环处理的次数;
- 循环处理每组数据:对于每组测试数据,依次读取 nnn 和 xxx;
- 计算总能量:
- 基础能量:nnn(固定不变);
- 额外奖励能量:使用整数除法 n/xn / xn/x(正好对应“完整间隔数”的要求);
- 总能量 = 基础能量 + 额外奖励能量,即 n+n/xn + n / xn+n/x;
- 输出结果:每组数据计算完成后,直接输出总能量即可。
三、代码解析
#include<iostream>usingnamespace std;intmain(){int t,x,n; cin>>t;// 读取测试用例组数t// 循环处理t组测试数据,循环变量i从1到t(i的取值不影响计算,仅用于控制循环次数)for(int i=1;i<=t;i++){ cin>>n>>x;// 依次读取当前组的行走公里数n和奖励间隔x// 计算并输出总能量:n(基础能量) + n/x(额外奖励,整数除法自动取整) cout<<n+n/x<<endl;}return0;// 程序正常结束,返回0}逐行说明
#include <iostream>:引入C++标准输入输出流库,为cin(输入)和cout(输出)提供支持;using namespace std;:使用std命名空间,避免后续写std::cin、std::cout的冗余写法,简化代码;int main():C++程序的入口函数,程序从这里开始执行;int t,x,n;:声明3个整型变量,分别用于存储测试组数 ttt、奖励间隔 xxx、行走公里数 nnn;cin>>t;:从控制台读取一个整数,赋值给变量 ttt,获取测试用例总数;for(int i=1;i<=t;i++):循环 ttt 次,对应处理 ttt 组测试数据;cin>>n>>x;:在每次循环中,依次读取两个整数,分别赋值给 nnn 和 xxx,获取当前组的核心参数;cout<<n+n/x<<endl;:核心计算与输出语句,完成总能量计算并换行输出结果,符合输出格式要求;return 0;:main函数返回0,表示程序正常执行完毕。
五、总结
- 本题核心是数学公式推导:总能量 = n+n/xn + n/xn+n/x,关键理解额外奖励的计算规则(整数除法取整);
- 编程重点是多组数据的循环处理,掌握
for循环与cin/cout的配合使用; - 本题是GESP二级基础应用题,难度较低,主要考察对整数除法特性和基本输入输出的掌握。