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}")
相关推荐
智者知已应修善业1 天前
【51单片机独立按键控制数码管移动反向,2片74CH573/74CH273段和位,按键按下保持原状态】2023-3-25
经验分享·笔记·单片机·嵌入式硬件·算法·51单片机
khddvbe1 天前
C++并发编程中的死锁避免
开发语言·c++·算法
C羊驼1 天前
C语言:两天打鱼,三天晒网
c语言·经验分享·笔记·算法·青少年编程
菜菜小狗的学习笔记1 天前
剑指Offer算法题(四)链表
数据结构·算法·链表
myloveasuka1 天前
[Java]查找算法&排序算法
java·算法·排序算法
清水白石0081 天前
Free-Threaded Python 实战指南:机遇、风险与 PoC 验证方案
java·python·算法
We་ct1 天前
LeetCode 148. 排序链表:归并排序详解
前端·数据结构·算法·leetcode·链表·typescript·排序算法
飞Link1 天前
具身智能核心架构之 Python 行为树 (py_trees) 深度剖析与实战
开发语言·人工智能·python·架构
桃气媛媛1 天前
Pycharm常用快捷键
python·pycharm
本喵是FW1 天前
C语言手记1
java·c语言·算法