L1-056 猜数字(Python实现) 测试点全过

前言: {\color{Blue}前言:} 前言:

  • 本系列题使用的是,"PTA中的团体程序设计天梯赛------练习集"的题库,难度有L1、L2、L3三个等级,分别对应团体程序设计天梯赛的三个难度。
  • 更新取决于题目的难度,和学校的事情,但尽可能保证每日更新,若没更新次日补上。
  • 虽然可以做,但是还是没前几天做的那道题难
  • 我的方法可能不是最简单的,如有什么好的建议,欢迎各位CSDN的朋友告诉我

题目

一群人坐在一起,每人猜一个 100 以内的数,谁的数字最接近大家平均数的一半就赢。本题就要求你找出其中的赢家

输入格式

输入在第一行给出一个正整数 N ( ≤ 1 0 4 ) N(≤10^4 ) N(≤104)。随后 N 行,每行给出一个玩家的名字(由不超过8个英文字母组成的字符串)和其猜的正整数 ( ≤ 100 ) (≤ 100) (≤100)。

输出格式:

在一行中顺序输出:大家平均数的一半(只输出整数部分)、赢家的名字,其间以空格分隔。题目保证赢家是唯一的。

输入样例:

复制代码
7
Bob 35
Amy 28
James 98
Alice 11
Jack 45
Smith 33
Chris 62

输出样例:

复制代码
22 Amy

题解

python 复制代码
N = int(input())  # 输入玩家的数量

players = []  # 用于存储玩家信息的列表

# 输入玩家的名字和猜的数字,并将其存储在列表中
for _ in range(N):
    name, number = input().split()
    players.append((name, int(number)))

# 计算所有玩家猜数字的总和
total = sum(number for _, number in players)

# 计算大家平均数的一半(只取整数部分)
average_half = total // (2 * N)

# 初始化赢家和最小差值
winner = ""
min_difference = float('inf')

# 遍历每个玩家,计算其猜数字与平均数一半的差值,并更新赢家和最小差值
for name, number in players:
    difference = abs(number - average_half)
    if difference < min_difference:
        winner = name
        min_difference = difference

# 输出结果
print(f"{average_half} {winner}")
相关推荐
fail_to_code41 分钟前
递归法的递归函数何时需要返回值
算法
C137的本贾尼1 小时前
(每日一道算法题)二叉树剪枝
算法·机器学习·剪枝
Blossom.1181 小时前
使用Python和Flask构建简单的机器学习API
人工智能·python·深度学习·目标检测·机器学习·数据挖掘·flask
吴声子夜歌1 小时前
OpenCV——Mat类及常用数据结构
数据结构·opencv·webpack
Love__Tay2 小时前
【学习笔记】Python金融基础
开发语言·笔记·python·学习·金融
笑口常开xpr2 小时前
数 据 结 构 进 阶:哨 兵 位 的 头 结 点 如 何 简 化 链 表 操 作
数据结构·链表·哨兵位的头节点
BUG收容所所长2 小时前
栈的奇妙世界:从冰棒到算法的华丽转身
前端·javascript·算法
有风南来2 小时前
算术图片验证码(四则运算)+selenium
自动化测试·python·selenium·算术图片验证码·四则运算验证码·加减乘除图片验证码
wangjinjin1802 小时前
Python Excel 文件处理:openpyxl 与 pandas 库完全指南
开发语言·python
XRZaaa3 小时前
常见排序算法详解与C语言实现
c语言·算法·排序算法