P8841 [传智杯 #4 初赛] 竞争得分 ----- 归一化*100
题目描述
为了鼓励大家写出更好的作业,花栗鼠科技大学(Hualishu University of Science and Technology, HUST)的组原实验采用了竞争得分的方式。
具体来说,假设有 nn 个人提交了作业,并且其中原始得分最低的人记作 a_{min}amin ,原始得分最高的人记作 a_{max}amax,第 ii 个人的原始得分为 a_iai,那么第 ii 个人的得分就是:
100 \times \frac{a_i-a_{min}}{a_{max}-a_{min}}100×amax−aminai−amin
由于成绩系统的问题,最终录入的成绩只能是整数,采用直接去掉小数部分的方法。
输入格式
第一行一个整数 nn 表示人数。(1 \leq n \leq 10001≤n≤1000)
第二行共nn 个整数,为序列 aa ,其中 a_iai 表示第 ii 个人的原始作业得分。(1 \leq a_i \leq 10001≤ai≤1000)
输出格式
一行,共 nn 个整数,表示经过更新后每个人的得分。
输入输出样例
输入 #1
3 1 2 3
输出 #1
0 50 100
#include <iostream> #include <vector> #include <cmath> #include <algorithm> using namespace std; int main() { int n, a; int m; cin >> n; m = n; vector<int> pre_res; while (n--) { cin >> a; pre_res.push_back(a); } int maxa = *max_element(pre_res.begin(), pre_res.end()); int mina = *min_element(pre_res.begin(), pre_res.end()); //cout << maxa << " " << mina; if (maxa == mina) { cout << 100; m--; while (m--) { cout << " " << 100; } return 0; } cout << ((pre_res[0] - mina) * 100 / (maxa - mina)); for (int i = 1; i < m; ++i) { cout << " " << ((pre_res[i] - mina) * 100 / (maxa - mina)); } return 0; }
hello my world
本文来自博客园,作者:slowlydance2me,转载请注明原文链接:https://www.cnblogs.com/slowlydance2me/p/16908625.html