文章

【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$。


题目分析

解题思路

本题的解题思路如下:

  1. 问题分析:
    • 给定n个整数,需要将每个整数四舍五入到最接近的整十数
    • 四舍五入规则:个位数小于5向下取整,大于等于5向上取整
    • 例如:43四舍五入为40,58四舍五入为60
  2. 解题方法:

    通过取余和判断

    • 核心思路:
      • 用取余运算(%)获取个位数
      • 根据个位数大小决定向上或向下取整
    • 实现公式:
      • 个位数 = x % 10
      • 个位数 < 5时:结果 = x - 个位数
      • 个位数 ≥ 5时:结果 = x + (10 - 个位数)
  3. 实现要点:
    • 注意输入数据的范围: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 进行授权