【华为机试】2023年真题B卷(python)-冠亚军排名-奖牌榜排名

2023-12-31 13:33:26

一、题目

题目描述:

2012伦敦奥运会即将到来,大家都非常关注奖牌榜的情况,现在我们假设奖牌榜的排名规则如下.?
1.首先gold medal数量多的排在前面?
2.其次silver medal数量多的排在前面?
3.然后bronze medal数量多的排在前面?
4.若以上三个条件仍无法区分名次,则以国家名称的字典顺序排定 我们假设国家名称不超过二十个字符,各类奖牌数不超过100,且大于0

二、输入输出

输入描述:
第一行输入一个整数N(0<N<21),代表国家数量然后接下来的N行,每行包含1个字符串Name表示各个国家的名称和三个整数Gi.Si,Bi 表示每个获得的aold medal.silver medal.bronze medal的数量,以空格隔开,如(China 51 20 21).?
具体见样例输入。
5 China 32 28 34?
England 12 34 22?
France 23 33 2?
Japan 12 34 25?
Rusia 23 43 0
输出描述:
输出奖牌榜的依次顺序,只输出国家名称,各占一行,具体见样例输出 China Rusia France Japan England

三、示例

示例1:?
输入:
5?
China 32 28 34?
England 12 34 22?
France 23 33 2?
Japan 12 34 25
Rusia 23 43 0?
输出:
China

Rusia

France

Japan

England?
说明:

四、解题思路

自定义排序

五、参考代码?

# -*- coding: utf-8 -*-
'''
@File    :   2023-B-冠亚军排名-奖牌榜排名.py
@Time    :   2023/12/29 18:50:01
@Author  :   mgc 
@Version :   1.0
@Desc    :   None
'''

import bisect

def print_countries_by_medals(num_countries):
    
    countries = []

    for _ in range(num_countries):
        name, gold, silver, bronze = input().strip().split()
        gold, silver, bronze = -int(gold), -int(silver), -int(bronze)
        country_tuple = (gold, silver, bronze, name)  # 创建国家元组
        bisect.insort(countries, country_tuple)  # 将国家元组按奖牌数插入到合适的位置

    for country in countries:
        print(country[3])  # 输出国家名称

num_countries = int(input().strip())  # 国家数量
print_countries_by_medals(num_countries)

文章来源:https://blog.csdn.net/u014481728/article/details/135297010
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。