梦熊杯-十二月月赛-钻石组题解-B.卷王

B. Problem B.卷王(study.cpp)

内存限制:256 MiB

时间限制:1000 ms

标准输入输出

题目类型:传统

评测方式:文本比较

题目描述:

在某个群里,有一个卷王,他很关心群友的学习成绩。

他扬言如果群友不上缴成绩单,他就在暑假每天在群里催促群友学习。

于是他成功地拿来了群友的成绩单,打算研究群友到底学得怎么样。

但他卷累了,所以他要求你算出来群友的平均分,不然就每天私聊催促你学习。

成绩单上写了群友所学的所有 n 门课程,每门课程的成绩分别是 gi。

如果一门课的成绩 gi 大于等于 60 分,那么群友通过了这门课,这门课会计入总成绩。

否则他就挂科了,相当于没有学过这门课,所以这门课也不会计入平均成绩的计算。

特别的,如果群友没有不挂科的课程,那么他的平均分是 0。

输入格式:

第一行一个整数 n,表示课程数目。

第二行个非负整数 n,gi表示第i门课程的成绩

输出格式:

一行一个浮点数,表示群友的平均分,四舍五入到三位小数。

样例:

【样例 1 输入】

4
55 66 77 88

【样例 1 输出】

77.000

【样例 2 输入】

4
55 44 33 22

【样例 2 输出】

0.000

第一个样例中,群友一共学了4门课程,其中有一门55分的课程挂科了,不计入成绩。

剩下门课程3,平均分是(66+77+88)/3=77,保留三位小数输出为77.000。

第二个样例中群友所有课都挂了,所以平均分是0,但也要按照三位小数输出。

数据范围与提示:

对于20%的数据,n=0。

对于40%前的数据,n<=1。

对于另外20%的数据,gi>=60。

对于另外20%的数据,保证答案是整数。

对于100%的数据,0<=n<=10^3,0<=gi<=100。

思路:

  我们简单说一下思路,首先定义两个计数器,都初始化为0,一个代表挂科的数目,另一个存的是所有没有挂科科目的总分(最后用来求平均数的)。

  进行一次遍历,如果gi<60,那么第一个计数器加上1,否则的话第二个计数器加上gi,遍历玩过后,我们进行判断,如果第一个计数器和学科总数相等,那么说明他所有学科都挂科了,平均数为0,直接输出0.000.

  之后我们利用printf("%.3lf",……).来输出平均数,省略的部分就是我们要输出的平均数,我们知道,这个学生有1号计数器个学科挂科,那么没有挂科的数量就为学科总数-1号计数器,之后利用2号计数器除以没有挂科的学科的总数,输出过后,就是平均数了!

代码:

#include<bits/stdc++.h> //万能头文件 
using namespace std; //批准使用std类 
int main(){ //main主函数 
	int n,sum=0,vum=0,x=0; //定义 
	cin>>n; //输入 
	x=n; //赋值 
	float a; //d定义 
	while(n--){
		int g; //定义gi 
		cin>>g; //输入gi 
		if(g<60) //是不是挂科 
		  sum++; //1号计数器+1 
		else //不是挂科 
		  vum+=g; //分数统计 
	}
	if(sum==x) //如果全部都挂科了 
	  cout<<"0.000"<<endl; //输出三位小数0.000 
	else //如果有没有挂科的科目 
	  printf("%.3f",(float)vum/(float)(x-sum)); //求出平均分并输出 
	return 0; //结束 
}

总结:

  这道题很简单,很简单!简单到我认为他都应该编入白银组第一,二题的,仅仅只需要学生学会计数就行了!为什么会在钻石组里面呢?还是钻石组的第二题? 

题目链接:

登录 - 梦熊联盟http://mna.wang/contest/52/problem/2

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙星尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值