1 条题解

  • 0
    @ 2025-8-24 21:16:35

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Igallta
    「この世には愛も知らない人が 沢山いるんですよ」

    搬运于2025-08-24 21:16:34,当前版本为作者最后更新于2024-08-28 18:15:08,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    题意

    把两个老师每题给的分全加起来,然后 ÷2\div 2 再向上取整。

    思路

    首先,我们要输入。

    根据我们总结的题意,我们还需要把所有分数加起来。

    因为我们尽量要让时间更少,能放在一起做的操作,就放在一起。

    所以这里输入和累加在一个循环里。

    cin>>n;
    for(int i=1;i<=n;i++){
    	cin>>a[i];
    	m+=a[i];
    }
    for(int i=1;i<=n;i++){
    	cin>>b[i];
    	m+=b[i];
    }
    

    然后,我们要处理“向上取整”,这里我们的 C++ 帮我们提供了一个函数,叫做 ceil,它需要传入一个 double 类型的数据,它会返回一个 double 类型的数据,代表向上取整的结果。

    注意到我们的 mmint 类型,所以我们做最后一步操作的时候,需要把 m÷2m\div 2 转换为 double 类型。

    我们只需要把 m/2 改为 m/2.0 就可以了,这样编译器就会认为这是一个浮点数。

    最后,因为 ceil 返回的是 double,可能会有精度误差导致 WA,所以要转换为 int 类型。

    这部分的代码:

    cout<<(int)ceil(m/2.0); 
    

    一些扩展小知识

    我们现在知道了向上取整是 ceil 函数,那么向下取整呢?叫做 floor。和 ceil 一样,都是传入 double,返回 double

    相信也有一些同学知道“四舍五入”这个概念,它在 C++ 中的函数是 round,用于四舍五入,也是传入 double 返回 double

    • 1

    信息

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