题目描述
为了鼓励大家写出更好的任务,ACM集训队采用了竞争得分的方式。
具体来说,假设有 n 个人提交了任务,并且其中原始得分最低的人记作 amin ,原始得分最高的人记作 amax,第 i 个人的原始得分为 ai ,那么第 i 个人的得分就是:
100*ai-amin/amax-amin
由于成绩系统的问题,最终录入的成绩只能是整数,采用直接去掉小数部分的方法。
输入
第一行一个整数 n 表示人数。(1<=n<=1000)
第二行共n 个整数,为序列 a ,其中 ai 表示第 i 个人的原始任务得分。(1<=n<=1000)(数据保证最高分和最低分不同)
输出
一行,共 n 个整数,表示经过更新后每个人的得分。
样例输入
3
1 2 3
样例输出
0 50 100
案例代码
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int scores[n];
for (int i = 0; i < n; i++) {
scanf("%d", &scores[i]);
}
int min_score = scores[0];
int max_score = scores[0];
for (int i = 1; i < n; i++) {
if (scores[i] < min_score) {
min_score = scores[i];
}
if (scores[i] > max_score) {
max_score = scores[i];
}
}
for (int i = 0; i < n; i++) {
int updated_score = 100 * (scores[i] - min_score) / (max_score - min_score);
printf("%d ", updated_score);
}
return 0;
}
在主函数中,首先读取输入的人数n,然后创建一个大小为n的数组来存储每个人的得分。接下来,遍历数组找到最低分和最高分。然后再次遍历数组,根据给定的计算公式计算每个人的得分,并输出整数部分。
运行截图
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END