NOIP2017普及组T1成绩

来源:互联网 发布:剑灵灵女捏脸数据图表 编辑:程序博客网 时间:2024/05/21 18:41

T1成绩

题目描述

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

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

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

输入输出格式

输入格式:

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

输出格式:

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

输入输出样例

输入样例#1:

100 100 80 

输出样例#1:

90

输入样例#2:

60 90 80 

输出样例#2:

79
说明
输入输出样例1说明

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

输入输出样例2说明

牛牛的作业成绩是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的整数倍。

【考场上100分程序】

#include<iostream>

#include<cstdio>

using namespace std;

int main(){

    freopen("score.in","r",stdin);

    freopen("score.out","w",stdout);

    int a,b,c;

    cin>>a>>b>>c;

    a=a/10*2;

    b=b/10*3;

    c=c/10*5;

    cout<<a+b+c;

    return 0;

}

【考场上60分程序(初评)】

#include<algorithm>

#include<iostream>

#include<cstdlib>

#include<cstring>

#include<cstdio>

#include<cmath>

using namespace std;

int a,b,c;

int main()

{

    freopen("score.in","r",stdin);

    freopen("score.out","w",stdout);

    cin>>a>>b>>c;

    int x=a*0.2+b*0.3+c*0.5;

    cout<<x<<endl;

    return 0;

}

这倒题我在考场上拿了满分,(因为我幸运地用了noilinux,在测样例时发现了错误)但是初评有60分的,是因为他不清楚浮点数有误差。现在我们来启动noi linux虚拟机,输入样例1:100100 80输出结果是:90,好没问题,但输入60 90 80,输出结果是:78,然而在windows下输出结果是:79,这就是误差。所以:不到一定要用浮点数时,不用浮点数。

附:NOIP2017普及组score题目成绩更新的说明

        在NOIP2017赛后核查中,命题组发现普及组题目《成绩score》的评测方式对于浮点运算的误差较为敏感,这与命题意图并不完全相符。在普及组试题的考查范围中,一般不要求选手对浮点数和浮点运算有深入的理解。因此,经NOIP2017命题组与评测组讨论决定,调整本题的评测插件,并对该题重新进行统一评测。

特此说明!

NOIP2017命题组、评测组

2017年11月22日