题解 | 成绩-NOIP2017普及组复赛D题

成绩

https://ac.nowcoder.com/acm/contest/245/D

题目描述

牛牛最近学习了 C++入门课程,这门课程的总成绩计算方法是:

总成绩=作业成绩×20%+小测成绩×30%+期末考试成绩×50%

牛牛想知道,这门课程自己最终能得到多少分。

输入描述:

输入只有 1 行,包含三个非负整数A、B、C,分别表示牛牛的作业成绩、小测成绩和期末考试成绩。
相邻两个数之间用一个空格隔开,三项成绩满分都是 100 分。

输出描述:

输出只有 1 行,包含一个整数,即牛牛这门课程的总成绩,满分也是 100分。

示例1

输入
100 100 80
输出
90
说明
牛牛的作业成绩是 100分,小测成绩是100分,期末考试成绩是80分,总成绩是 100×20%+100×30%+80×50%=20+30+40=90。

示例2

输入
60 90 80
输出
79
说明
牛牛的作业成绩是 60分,小测成绩是90分,期末考试成绩是80分,总成绩是60×20%+90×30%+80×50%=12+27+40=79。

备注:

对于 30% 的数据,A=B=0。
对于另外 30% 的数据,A=B=100。
对于 100% 的数据, 0≤A、B、C≤100 且 A、B、C 都是 10 的整数倍。

解答

这题应该是的noip普及组历年来最简单的一道题目。
不过,这题是存在问题的,一般人看到题意,马上就想到用3个数分别乘以0.2,0.3,0.5。但是,如果使用int乘以double,是会出现问题的。所以,这题可以使用加权平均数来做。3个成绩的权值分别为2,3,5,最后除以10就可以了。由于都是10的整数倍,所以不会出现小数。
代码如下:
#include<iostream>
#include<cstdio>
using namespace std;
int main() {
	int a,b,c;
	scanf("%d %d %d",&a,&b,&c);
	printf("%d\n",(a*2+b*3+c*5)/10);
	return 0;
}

来源:Lukeeclipse
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 17:37
点赞 评论 收藏
分享
每晚夜里独自颤抖:你cet6就cet6,cet4就cet4,你写个cet证书等是什么意思。专业技能快赶上项目行数,你做的这2个项目哪里能提现你有这么多技能呢
点赞 评论 收藏
分享
Yki_:你要算时间成本呀,研究生两三年,博士三四年,加起来就五六年了,如果你本科去腾讯干五年,多领五年的年薪,加上公司内涨薪,可能到时候十五年总薪资也跟博士差不多
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务