链接:https://ac.nowcoder.com/acm/contest/61132/J 来源:牛客网 河南农业大学信管学院举办一年一度的合唱比赛,目前你是评委之一,剩下还有其他的n位评委,给定一个正整数n和n个正整数表示这n个评委给目前在表演的团队的分数,评分规则为在所有评委(包括你)的分数中去掉一个最高分和最低分,剩下的取平均值(总共n-1个值),现在你可以参与评分(1~100之间的整数),问最终结果会在什么区间内,用两个数表示这个区间,结果保留6位小数。 输入描述: 第一行给定一个正整数n 接下来一行给定n个整数表示n个评委的分数 2<=n<=1000 输出描述: 输出两个保留六位的小数l,r表示答案。 示例1 输入 3 80 90 100 输出 85.000000 95.000000 示例2 输入 4 3 5 9 13 输出 5.666667 9.000000
时间: 2024-04-17 09:23:05 浏览: 149
题目要求我们参与评分,给出最终结果的区间。
根据题目描述,我们需要找到最高分和最低分,然后将剩下的分数取平均值。由于题目给定了评分范围为1~100之间的整数,所以最高分和最低分的范围也是1~100。
我们可以先对给定的n个评委的分数进行排序,然后去掉最高分和最低分,再计算剩下分数的平均值。最后得到的平均值就是最终结果的区间的左边界。
同理,我们也可以去掉最低分和最高分,再计算剩下分数的平均值。得到的平均值就是最终结果的区间的右边界。
下面是示例代码实现:
```python
import sys
def find_score_range(n, scores):
scores.sort()
total_score = sum(scores)
avg_score = total_score / n
left_range = (total_score - scores[0] - scores[-1]) / (n - 2)
right_range = (total_score - scores[0] - scores[-1]) / (n - 2)
return left_range, right_range
if __name__ == "__main__":
# 读取输入
n = int(sys.stdin.readline().strip())
scores = list(map(int, sys.stdin.readline().strip().split()))
# 计算结果
left_range, right_range = find_score_range(n, scores)
# 输出结果
print('%.6f %.6f' % (left_range, right_range))
```
这样,我们就可以得到最终结果的区间。
阅读全文