[传智杯 #4 初赛] 竞争得分|组原成绩

127 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第7天,点击查看活动详情

[传智杯 #4 初赛] 竞争得分

题目描述

为了鼓励大家写出更好的作业,花栗鼠科技大学(Hualishu University of Science and Technology, HUST)的组原实验采用了竞争得分的方式。

具体来说,假设有 nn 个人提交了作业,并且其中原始得分最低的人记作 amina_{min} ,原始得分最高的人记作 amaxa_{max},第 ii 个人的原始得分为 aia_i,那么第 ii 个人的得分就是: 100×aiaminamaxamin100 \times \frac{a_i-a_{min}}{a_{max}-a_{min}}

由于成绩系统的问题,最终录入的成绩只能是整数,采用直接去掉小数部分的方法

输入格式

第一行一个整数 nn 表示人数。(1n10001 \leq n \leq 1000

第二行共nn 个整数,为序列 aa ,其中 aia_i 表示第 ii 个人的原始作业得分。(1ai10001 \leq a_i \leq 1000

输出格式

一行,共 nn 个整数,表示经过更新后每个人的得分。

样例 #1

样例输入 #1

3
1 2 3

样例输出 #1

0 50 100

思路

这题很简单,我们只需要用到STL中的sort函数

  • 首先用两个数组来存储数据,一个是原始数据,另一个是更新后的数据
  • 接着sort排序
  • 最后按照题目要求进行求解即可

代码展示

#include<iostream>
#include<algorithm>
using namespace std;

const int N=1010;
int a[N],b[N];

int main()
{
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>a[i];
        b[i]=a[i];
    }
    sort(b,b+n);
    int mother=b[n-1]-b[0];
    for(int i=0;i<n;i++){
        int res=(int)(100*(a[i]-b[0])/mother);
        cout<<res<<" ";
    }
    return 0;
}

[传智杯 #4 初赛] 组原成绩

题目描述

花栗鼠科技大学(Hualishu University of Science and Technology, HUST)的计算机组成原理快要出分了。你现在需要计算你的组原成绩如何构成。

具体来说,组原成绩分为三部分,分别是平时出勤 tt ,作业 hh 和考试 ee 。总成绩 ww 由如下公式计算:

w=t×20%+h×30%+e×50%w=t \times 20\% +h \times 30\%+e \times 50\%

其中我们保证 0h,e,t1000 \leq h,e,t \leq 100

现在你知道了你的组原考试的 t,h,et,h,e ,你希望计算你的总成绩。

由于教务系统的特殊性,最终成绩只能是整数,采取 直接去掉小数部分 的办法。

输入格式

一行三个整数,表示 t,h,et,h,e

输出格式

一行一个整数,为 ww

样例 #1

样例输入 #1

50 100 100

样例输出 #1

90

题解

太简单了,初学者都随便做

#include<iostream>
using namespace std;
int main()
{
    int t,h,e;
    cin>>t>>h>>e;
    int res=(int)(t*0.2+h*0.3+e*0.5);
    cout<<res;
    return 0;
}

PS:这是传智杯第四届B组的第一题和第三题,都太简单了,没有水平