题目描述

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

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

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

输入输出格式

输入格式:

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

输出格式:

一个整数,即牛牛这门课程的总成绩,满分也是100100分。

输入输出样例

输入样例#1: 复制

100 100 80 
输出样例#1: 复制

90
输入样例#2: 复制

60 90 80 
输出样例#2: 复制

79

说明

输入输出样例1说明

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

输入输出样例2说明

牛牛的作业成绩是6060分,小测成绩是9090分,期末考试成绩是8080分,总成绩是60 \times 20\%+90 \times 30\%+80 \times 50\%=12+27+40=7960×20%+90×30%+80×50%=12+27+40=79。

数据说明

对于30\%30%的数据,A=B=0A=B=0。

对于另外30\%30%的数据,A=B=100A=B=100。

对于100\%100%的数据,0≤A,B,C≤1000≤A,B,C≤100且A,B,CA,B,C都是1010的整数倍。

解析:

这是一个比较简单的程序,适合刚刚入门的新手,但是就在这简单的程序中却蕴含玄机,一不小心就掉进坑里。下面听我细细道来。

Ac程序1:因为有小数,直接使用double类型。

#include<iostream>
using namespace std;
int main(){
double sum,x,y,z;
cin>>x>>y>>z;
sum=x*0.2+y*0.3+z*0.5;
cout<<sum<<endl;
}

Ac程序2:避免使用double

#include<iostream>
using namespace std;
int main(){
int sum,x,y,z;
cin>>x>>y>>z;
sum=(x*+y*+z*)/;
cout<<sum<<endl;
}

得部分分程序:

#include<cstdio>
#include<algorithm>
using namespace std;
int a,b,c;
int main()
{//输入60 90 80 正确结果是79.而这里输出78,为什么呢?
scanf("%d%d%d",&a,&b,&c);
printf("%d\n",int(a*0.2+0.3*b+0.5*c));
return ;
}
输入60 90 80 正确结果是79.而有些机器会输出78,原因是精度问题(s的结果本来正好是整数)。
 因为结果s的实数值正好是79.000000000000

在计算时其实:78.999999999999和79.0000000000001和79.000000000000几乎被认为是相等的。

但int(取整)可能不一样了,引起误差 ,如果使用round(四舍五入))就可以避免这个问题)。

#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
int a,b,c,s;
int main()
{//输入60 90 80 正确结果是79.而这里输出78,为什么呢?
scanf("%d%d%d",&a,&b,&c);
s=round(a*0.2+0.3*b+0.5*c);
printf("%d\n",s);
return ;
}

总结:

 在判断一个正的实数x是否为0时,最好不要x==0这样判断,而是,x<0.0000000001的方法。

P3954 成绩(noip2017普及组)的更多相关文章

  1. [NOIP2017普及组]跳房子(二分,单调队列优化dp)

    [NOIP2017普及组]跳房子 题目描述 跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一. 跳房子的游戏规则如下: 在地面上确定一个起点,然后在起点右侧画 nn 个格子, ...

  2. 「LOJ 6373」NOIP2017 普及组题目大融合

    NOIP2017 普及组题目大融合 每个读者需要有某个后缀的书,可以暴力map,复杂度\(o(9*nlog(n))\),也可以反串建trie树,复杂度\(o(9*n)\). 故可以求出需要的最少的RM ...

  3. P3956 [NOIP2017 普及组] 棋盘

    P3956 [NOIP2017 普及组] 棋盘 题目 题目描述 有一个 m×m 的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的.你现在要从棋盘的最左上角走到棋盘的最右下角. 任何一个时刻,你 ...

  4. noip2017普及组

    过了这么久才来写博客,也是我这么一段时间都很低迷吧.... 老实来说,今年应该是要打提高组的...可还是打了普及组... 其实最猥琐的还是我连普及都写挂了,作为一个学了两年的人,图论,进阶dp都写过的 ...

  5. NOIP2017普及组比赛总结

    期中考总结&NOIP2017总结 2017年11月11日,我第二次参加NOIP普及组复赛.上一年,我的得分是250分,只拿到了二等奖.我便把目标定为拿到一等奖,考到300分以上. 早上8点多, ...

  6. NOIP2017普及组解题报告

    刚参加完NOIP2017普及,只考了210,于是心生不爽,写下了这篇解题报告...(逃 第一次写博,望dalao们多多指导啊(膜 第一题score,学完helloworld的人也应该都会吧,之前好多人 ...

  7. NOIP2017普及组初赛试题及答案

    普及组C++语言试题 一.单项选择题(共 20 题,每题 1.5 分,共计 30 分:每题有且仅有一个正确选项) 1.在 8 位二进制补码中,10101011 表示的数是十进制下的( ). A. 43 ...

  8. NOIP2017普及组T2题解

    还是神奇的链接 上面依然是题目. 这道题依然很简单,比起2015年的普及组t2好像还是更水一些. 不过这道题能讲的比第一题多. 我们一起来看一下吧! 这一题,我们首先将书的编号全部读入,存在一个数组里 ...

  9. NOIP2017普及组初赛总结

    去年,我普及组复赛翻车,居然没进一等奖,于是,今年,我只能再做一次普及组. 这次初赛我93.5分,居然是中山市第一--(中山市太弱了?) 其实我觉得我没考好. 比赛时第二题(计算机存储数据的基本单位是 ...

随机推荐

  1. 从Scratch到Python:会动的小猫

    大部分人提起儿童编程,就会想到Scratch,然而当儿童升入中学,学习什么语言比较合适呢?我认为,Python是未来的方向,为此我将会把一些经典的Scratch案例用Python重新实现,抛砖引玉,希 ...

  2. java 枚举使用教程

    转载:https://blog.csdn.net/newbie_907486852/article/details/81027512 一.枚举型常量 首先枚举是一个特殊的class,这个class相当 ...

  3. App 打包

    记录一下: 1. applicationIdSuffix 实现不同 ApplicationId 打包,buildTypes 中添加编译后会成功生成加对应后缀的ApplicationId.在 produ ...

  4. Shiro框架配置-applicationContext里面的(仅提供借鉴)

    <!-- 配置自定义realm --> <bean id="shiroAuthRealm" class="com.sykj.realm.ShiroAut ...

  5. VGG

    2019-04-08 13:30:58 VGG模型是2014年ILSVRC竞赛的第二名,第一名是GoogLeNet.但是VGG模型在多个迁移学习任务中的表现要优于googLeNet.而且,从图像中提取 ...

  6. gm图片处理器:The gm/convert binaries can't be found

    今天在使用node处理模块gm的时候,总是无法正常使用,报:The gm/convert binaries can't be found(找不到gm/convert二进制文件) google了一下,发 ...

  7. LNMP的搭建

    一.下载安装MySQL 1.1:下载地址:https://dev.mysql.com/downloads/mysql/ 1.2:安装后 1.2.1:解压:tar -xf mysql-8.0.15-li ...

  8. Golang安装与命令

    1. 安装 Windows -  https://golang.org/dl/ 下载msi安装包,点击安装即可.安装后cmd运行go version弹出版本号即安装成功. 2. 命令行 生成exe文件 ...

  9. 安装在类虚拟机crossover中的容器怎么进行的备份和恢复

    备份教程: 步骤一:运行CrossOver,选中相关容器,然后在[容器]中找到并点击[导出“MathType6.9b_Trial_YY.exe”到存档],或者直接右击容器名称,然后选择[导出“Math ...

  10. Windows许可证即将到期激活教程

    电脑提示Windows许可证即将到期,于是自己就在网上找了一些教程,但是并没有激活成功,反而由即将到期变为了通知状态,尝试了各种密钥都不行,也下载了激活工具如暴风激活工具,KMS都不管用,尝试了好多方 ...