【Python】洛谷P7614 [COCI2011-2012#2] NAJBOLJIH 5

程序设计题:给定8个不同整数,找出和最大的5个数及其编号。排序并输出总和和编号,用于COCI数学竞赛。
摘要由CSDN通过智能技术生成

P7614 [COCI2011-2012#2] NAJBOLJIH 5

题目描述

给定 8 8 8 个数字 X 1 , X 2 , . . . , X 8 X_1,X_2,...,X_8 X1,X2,...,X8,从中选出 5 5 5 个数字,使得这 5 5 5 个数字的总和最大。输出这 5 5 5 个数字的和以及它们的编号。 X i X_i Xi 的编号为 i i i

输入格式

输入共 8 8 8 行,第 i i i 行包含一个正整数 X i X_i Xi保证所有 X i X_i Xi 互不相同

输出格式

输出共两行。

第一行包含一个整数,表示最大的总和。

第二行包含 5 5 5 个整数,表示 5 5 5 个数的编号,按升序排序

样例 #1

样例输入 #1

20
30
50
48
33
66
0
64

样例输出 #1

261
3 4 5 6 8

样例 #2

样例输入 #2

20
0
50
80
77
110
56
48

样例输出 #2

373
3 4 5 6 7

样例 #3

样例输入 #3

20
30
50
80
110
11
0
85

样例输出 #3

355
2 3 4 5 8

提示

【数据范围】

对于 100 % 100\% 100% 的数据, 1 ≤ X i ≤ 150 1 \le X_i \le 150 1Xi150

【说明】

本题分值按 COCI 原题设置,满分 50 50 50

题目译自 COCI2011-2012 CONTEST #2 T1 NAJBOLJIH 5

代码实现

由于需要对输入的 8 个数字取最大的 5 个数字,计算其总和并以升序输出其编号,故在输入时将每个输入的数字与其编号绑定(元组形式存储),并直接进行排序取 top 5。

  1. 使用 sorted() 函数先根据数字大小进行排序,取出最大的 5 个数字
  2. 对这 5 个数字进行编号的升序排列
  3. 统计 5 个数字的总和
  4. 依次输出这些数字的编号
top5 = sorted(sorted([(i + 1, int(input().strip())) for i in range(8)], key=lambda x: -x[1])[:5], key=lambda x: x[0])
print(sum(i[1] for i in top5))
print(" ".join([str(i[0]) for i in top5]))
  • 20
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值