luogu-B4258 [GESP202503 一级] 四舍五入

luogu-B4258 [GESP202503 一级] 四舍五入

GESP C++一级真题,简单判断和数学运算,难度★☆☆☆☆。

luogu-B4258 [GESP202503 一级] 四舍五入

题目要求

题目描述

四舍五入是一种常见的近似计算方法。现在,给定 nn 个整数,你需要将每个整数四舍五入到最接近的整十数。例如,4343 四舍五入后为 40405858 四舍五入后为 6060

输入格式

n+1n+1 行,第一行,一个整数 nn,表示接下来输入的整数个数。

接下来 nn 行,每行一个整数 a1,,ana_1, \cdots, a_n,表示需要四舍五入的整数。

输出格式

nn 行,每行一个整数,表示每个整数四舍五入后的结果。

输入输出样例 #1

输入 #1

5
43
58
25
67
90

输出 #1

40
60
30
70
90

说明/提示

对于所有测试点,保证 1n1001\leq n\leq 1001ai100001\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)O(n),需要处理n个输入数据
  • 空间复杂度:O(1)O(1),只需要存储常数个变量

{% include custom/custom-post-content-inner.html %}


示例代码

#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;
}

{% include custom/custom-post-content-footer.md %}

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

luogu-”系列题目可在 洛谷题库 在线评测。

bcqm-”系列题目可在 编程启蒙题库 在线评测。

GESP/CSP 认证学习微信公众号
GESP/CSP 认证学习微信公众号
Last updated on