问题1064--4.运动会团体总分

1064: 4.运动会团体总分

[命题人 : ]
时间限制 : 2.000 sec  内存限制 : 128 MB

题目描述

学校一个年级有10个班,某次运动会,有5个项目,已知每一个项目获得前6名的同学对应的名次和班级,求各班的团体总分计算团体总分规则如下:

已知在没有并列名次的情况下,第1-6名对应的分值分别是:1098765。如果有并列名次,那么对应名次得分规则是这样的:两个并列第一,此时就没有第二名了,那么此时的第一名的分值是第一名分值和第二名分值之和再除以2,也就是(10+9)/2=9.5分;如果有3个并列第一名,则第二、三名就没有了,此时第一名对应的分值就是(10+9+8)/3=9分;如果有8个并列第一名,那么后面的2-6名就没有了,此时由于是8个人平分6个名次的分值,所以此时第一名的分值是(10+9+8+7+6+5)/8=5.625分;其他情况并列也是这样的规则,例如第一名一个,第二名有两个并列,此时就没有第三名了,第二名的分值就是(9+8)/2=8.5。其他并列情况分值计算都是这样的规则。

现在我们要做的是,根据裁判送来一个年级5个项目的成绩,求一个年级各班的团体总分,然后按班级从小到大的顺序输出各班团体总分,保留2位有效小数。

下面是一组输入和输出的样例
输入:
1-1 2-2 3-3 4-4 5-5 6-6
1-1 2-2 3-3 4-4 5-5 6-6
1-1 2-2 3-3 4-4 5-5 6-6
1-1 2-2 3-3 4-4 5-5 6-6
1-1 2-2 3-3 4-4 5-5 6-6
输出:
1 50.00
2 45.00
3 40.00
4 35.00
5 30.00
6 25.00
7 0.00
8 0.00
9 0.00
10 0.00

输入

5行,每一行由若干个“n-m”形式组成的字符串,每个“n-m”由一个空格隔开,例如:1-2 2-10 3-5 4-2 5-1 6-7

n-m”中的n表示第n名,m表示班级号,n取值范围是小于等于6的正整数,m取值范围是小于等于10的正整数。

【提示】Python要从一行获取某个名次对应的班级,可以这样分两步:

第一步:使用类似 s = input().split() 这样语句,得到一个元素为字符串’n-m’形式的列表;

第二步:对第一步得到的列表s的每个元素e进行如下处理:

n, m = map(int, e.split('-'))

这样就得到了一对整数nm,其中n表示名次,m表示对应的班级号

以上只是一种参考,如果自己有更好的方法就用自己的方法。

输出

10行,按班级从小到大输出对应班级的成绩,每行两个用一个空格隔开的数m、x,第一个整数m表示班级,第二个数x表示对应班级的团体总分,x保留2位有效小数。

样例输入 Copy

1-5 2-4 3-7 4-10 5-9 6-1
1-2 1-3 3-5 4-6 4-7 6-8
1-7 2-3 3-7 4-4 5-5 6-1 6-8
1-1 1-2 1-5 4-6 4-7 6-8
1-4 2-4 3-5 4-7 5-9 6-10

样例输出 Copy

1 16.50
2 18.50
3 18.50
4 35.00
5 41.00
6 13.00
7 46.00
8 12.50
9 12.00
10 12.00

来源/分类