【GESP】C++一级真题 luogu-B4258 [GESP202503 一级] 四舍五入
GESP C++一级真题,简单判断和数学运算,难度★☆☆☆☆。
luogu-B4258 [GESP202503 一级] 四舍五入
题目要求
题目描述
四舍五入是一种常见的近似计算方法。现在,给定 $n$ 个整数,你需要将每个整数四舍五入到最接近的整十数。例如,$43$ 四舍五入后为 $40$,$58$ 四舍五入后为 $60$。
输入格式
共 $n+1$ 行,第一行,一个整数 $n$,表示接下来输入的整数个数。
接下来 $n$ 行,每行一个整数 $a_1, \cdots, a_n$,表示需要四舍五入的整数。
输出格式
$n$ 行,每行一个整数,表示每个整数四舍五入后的结果。
输入输出样例 #1
输入 #1
1
2
3
4
5
6
5
43
58
25
67
90
输出 #1
1
2
3
4
5
40
60
30
70
90
说明/提示
对于所有测试点,保证 $1\leq n\leq 100$,$1\leq a_i\leq 10000$。
题目分析
解题思路
本题的解题思路如下:
- 问题分析:
- 给定n个整数,需要将每个整数四舍五入到最接近的整十数
- 四舍五入规则:个位数小于5向下取整,大于等于5向上取整
- 例如:43四舍五入为40,58四舍五入为60
解题方法:
通过取余和判断
- 核心思路:
- 用取余运算(%)获取个位数
- 根据个位数大小决定向上或向下取整
- 实现公式:
- 个位数 = x % 10
- 个位数 < 5时:结果 = x - 个位数
- 个位数 ≥ 5时:结果 = x + (10 - 个位数)
- 核心思路:
- 实现要点:
- 注意输入数据的范围:1 ≤ n ≤ 100,1 ≤ ai ≤ 10000
- 需要循环处理每个输入的整数
- 确保输出结果是整十数
复杂度分析:
- 时间复杂度:$O(n)$,需要处理n个输入数据
- 空间复杂度:$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
27
#include <iostream>
int main() {
// 读取需要处理的整数个数
int n;
std::cin >> n;
// 循环处理每个整数
while (n--) {
// 读取当前需要四舍五入的整数
int x;
std::cin >> x;
// 获取个位数
int last_num = x % 10;
// 根据四舍五入规则处理
if (last_num < 5) {
// 小于5,向下取整到最近的整十数
std::cout << x - last_num << std::endl;
} else {
// 大于等于5,向上取整到最近的整十数
std::cout << x + (10 - last_num) << std::endl;
}
}
return 0;
}
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
GESP各级别考纲要点、知识拓展和练习题目清单详见C++学习项目主页
“luogu-”系列题目已加入洛谷Java、C++初学团队,作业清单,可在线评测,团队名额有限,欢迎加入。
“bcqm-”系列题目可在编程启蒙题库进行在线评测。
本文由作者按照 CC BY 4.0 进行授权