洛谷P5082 成绩解题思路及题解

讨论
858
通过
3.6K
提交
题目提供者 vercont
评测方式 云端评测
标签
难度 入门难度
时空限制 1000ms / 128MB
提交 题解

提示:收藏到任务计划后,可在首页查看。
最新讨论 显示
推荐的相关题目 显示
题目背景

小奔的score

题目描述

小奔的期末考试结束了。

他的成绩不久之后就会发下来。

给出一个考试成绩表格,例如:

科目/分值种类 语文 数学 英语
满分 100100 120120 150150
实际得分 9999 7373 100100
当然。学校的老师认为如果录入如此多的成绩不好算分,于是他想要你的综合成绩评定

综合成绩评定指:(每一科的满分之和3-每一科的实际得分之和2)÷每科所扣除分数的和。

小奔想请你给出他的综合成绩,你能做到吗?

输入输出格式

输入格式:
第一行给出一个整数nn,表示科目的总数。 第二行nn个整数a_ia
i
​ ,表示第ii门课程的满分。 第三行nn个整数b_ib
i
​ ,表示第ii门课程小奔的实际得分。

输出格式:
一行一个数,表示他的综合成绩。结果保留66位小数

输入输出样例

输入样例#1: 复制
3
10 10 10
5 5 5
输出样例#1: 复制
4.000000
说明

对于2020%的数据,数据为样例

对于100100%的数据,n<=1e7n<=1e7

根据题意,定义一个数组,但是数组不能太大(小),10000000就够了。

long long a[10000001],p[10000001],n;

为了方便计算,再定义两个存储变量

double b=0.0,c=0.0;

for循环定义数组

scanf("%d",&n); 
    for(int i=1;i<=n;i++){ 
        scanf("%d",&a[i]);
    }
    for(int i=1;i<=n;i++){
        scanf("%d",&p[i]);
    }

(如果合并,会出现交叉现象,输入数据一个满分一个实际,但是是先输入所有满分,再输入所有实际成绩)

再使用一个for语句来计算(此处可以合并,因为项数一样)

for(int i=1;i<=n;i++){
    	b+=1.0*a[i];
		c+=1.0*p[i];
    }

最后输出(略)
return就不用说了,养成习惯

程序仅供参考
代码如下:

#include<iostream>
#include<cstdio>
using namespace std;
double b=0.0,c=0.0;//用浮点型定义存储值方便计算 
long long a[10000001],p[10000001],n;//定义成绩 
int main(){
    scanf("%d",&n);//输入n组数据 
    for(int i=1;i<=n;i++){//输入数组 
        scanf("%d",&a[i]);//定义满分分数 
    }
    for(int i=1;i<=n;i++){
        scanf("%d",&p[i]);//定义实际 分数 
    }
    for(int i=1;i<=n;i++){
    	b+=1.0*a[i];//做总分累加 
		c+=1.0*p[i];//做成绩累加 
    }
    printf("%.6lf",(b*3-c*2)/(b-c));//使用printf函数输出,计算综合分 
    return 0;//return 0结束,否则会返回一个不定的值 
}

如有更好的代码,评论区见~~~~~~~~~~~

猜你喜欢

转载自blog.csdn.net/weixin_44111688/article/details/86550261