题目传送门
这道题主要考察的是 “打擂台” 算法,
也就是求最大或求最小值……
就像这样:
也可以写成这样:
最小值同理。
然而光求出最大最小值还不行,还必须求出每个人更新后的得分,计算方法题目已经给我们了,如下:
100×amax−aminai−amin
最后注意一个点,题目原文说:
由于成绩系统的问题,最终录入的成绩只能是整数,采用直接去掉小数部分的方法。
所以最后直接强转成 int
即可。
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| #include<bits/stdc++.h> using namespace std; int a[1005]; int main() { int n; double a_max = -1e9, a_min = 1e9; cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; if (a[i] > a_max) a_max = a[i]; if (a[i] < a_min) a_min = a[i]; } for (int i = 1; i <= n; i++) cout << (int)(100 * ((a[i] - a_min) / (a_max - a_min))) << " "; return 0; }
|
总结:
易错点只有最后要强转成 int
一个,其他的并不需要特别注意。