【洛谷入门赛】B4019 皆与生物有缘

题意

主角答完了题有两个老师会对他的每道题进行打分。

题目要求我们做的是把两个老师每题给的分全加起来,然后 ÷ 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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值