题意
两个老师会对你进行打分,我们要做的是把两个老师每题给的分全加起来,然后 ÷ 2 \div 2 ÷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 类型的数据,代表向上取整的结果。
注意到我们的 m m m 是 int 类型而不是 double 类型,所以我们做最后一步操作的时候,需要把 m ÷ 2 m\div 2 m÷2 转换为 double 类型。
在 C++ 中我们只需要把 m/2
改为 m/2.0
就可以了,这样编译器就会认为这是一个浮点数(double)。
最后,因为 ceil 返回的是 double,可能会有精度误差导致 WA,所以要转换为 int 类型,输出这个数即可。
这部分的代码:
cout<<(int)ceil(m/2.0);
完整代码:
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+1;
int a[N],b[N],n;
double m;
signed main(){
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];
}
cout<<(int)ceil(m/2.0);
return 0;
}
一些扩展小知识
我们现在知道了向上取整是 ceil 函数,那么向下取整呢?叫做 floor。和 ceil 一样,都是传入 double,返回 double。
相信也有一些同学知道“四舍五入”这个概念,它在 C++ 中的函数是 round,用于四舍五入,也是传入 double 返回 double。