1 条题解

  • 0
    @ 2025-8-24 21:18:11

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar chen_zhe
    Aya 敲可爱的~

    搬运于2025-08-24 21:18:10,当前版本为作者最后更新于2025-05-09 20:58:25,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    欢迎报名洛谷网校,期待和大家一起进步!

    本题考察循环结构。

    根据题目意思,我们要看一个数的个位数。如果个位数是 0,1,2,3,40, 1, 2, 3, 4(这些数字比较小,小于 55),我们就把个位数“舍去”,让它变成 00。如果个位数是 5,6,7,8,95, 6, 7, 8, 9(这些数字比较大,大于等于 55),我们就要“进位”。意思是,我们把个位数变成 00,然后让十位数增加 11。这叫做“五入”。比如:

    • 4343,个位数是 33。我们把 33 舍去变成 00,所以 4343 变成 4040
    • 5858,个位数是 88。我们把 88 变成 00,然后 55(十位数)增加 11 变成 66。所以 5858 变成 6060

    因此,我们使用循环结构读入 nn 个数。对于每一个读入的数 xx,首先先需要获取它的个位数。一个数除以 1010 的余数,就是它的个位数。因此可以使用 x % 10 得到结果。

    接着,我们判断个位数,如果个位数小于 55,那么,四舍五入后的数就是原来的数减去它的个位数。否则,如果个位数大于等于 55,那么,四舍五入后的数就是原来的数减去它的个位数,然后再加 1010。(这就相当于把个位变成 00,十位加 11)。

    int gewei = a % 10; // 计算个位数
    if (gewei < 5) {
        // 如果个位数小于 5,“舍去”
        ans = a - gewei;
    } else {
        // 如果个位数大于等于 5,“进位”
        ans = a - gewei + 10;
    }
    

    拓展思考:如果不想使用分支结构,可以使用 ans = (a + 5) / 10 * 10 做到四舍五入到整十位。想一想,这是为什么呢?

    • 1

    信息

    ID
    11768
    时间
    1000ms
    内存
    512MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者