2022年1月9日 python练习

Posted on 2022-01-09  35 Views


洛谷 P2550 [AHOI2001]彩票摇奖

题目描述

为了丰富人民群众的生活、支持某些社会公益事业,北塔市设置了一项彩票。该彩票的规则是:

每张彩票上印有 777 个各不相同的号码,且这些号码的取值范围为 31∼33。
每次在兑奖前都会公布一个由七个各不相同的号码构成的中奖号码。
共设置 777 个奖项,特等奖和一等奖至六等奖。

兑奖规则如下:

特等奖:要求彩票上 777 个号码都出现在中奖号码中。
一等奖:要求彩票上有 666 个号码出现在中奖号码中。
二等奖:要求彩票上有 555 个号码出现在中奖号码中。
三等奖:要求彩票上有 444 个号码出现在中奖号码中。
四等奖:要求彩票上有 333 个号码出现在中奖号码中。
五等奖:要求彩票上有 222 个号码出现在中奖号码中。
六等奖:要求彩票上有 111 个号码出现在中奖号码中。

注:兑奖时并不考虑彩票上的号码和中奖号码中的各个号码出现的位置。例如,中奖号码为 23 31 1 14 19 17 1823\ 31\ 1\ 14\ 19\ 17\ 1823 31 1 14 19 17 18,则彩票 12 8 9 23 1 16 712\ 8\ 9\ 23\ 1\ 16\ 712 8 9 23 1 16 7 由于其中有两个号码(232323 和 111)出现在中奖号码中,所以该彩票中了五等奖。

现已知中奖号码和小明买的若干张彩票的号码,请你写一个程序帮助小明判断他买的彩票的中奖情况。
输入格式

输入的第一行只有一个自然数 nnn,表示小明买的彩票张数;

第二行存放了 777 个介于 111 和 333333 之间的自然数,表示中奖号码;

在随后的 nnn 行中每行都有 777 个介于 111 和 333333 之间的自然数,分别表示小明所买的 nnn 张彩票。
输出格式

依次输出小明所买的彩票的中奖情况(中奖的张数),首先输出特等奖的中奖张数,然后依次输出一等奖至六等奖的中奖张数。
输入输出样例
输入 #1

2
23 31 1 14 19 17 18
12 8 9 23 1 16 7
11 7 10 21 2 9 31

输出 #1

0 0 0 0 0 1 1


题意很简单,实现也很简单

n = int(input())
get = [0] * 8
res_list = []
z_list = list(map(int,input().split()))
for i in range(n):
    count = 0
    res_list = list(map(int,input().split()))
    for i in res_list:
        if i in z_list:
            count += 1
    get[7 - count] += 1
for i in range(7):
    print(get[i],end=" ")

CodinGame TEMPERATURES

编写一个程序,打印输入数据中最接近 0 的温度。如果两个数字同样接近于零,则必须认为正整数最接近于零(例如,如果温度为 -5 和 5,则显示 5)。
游戏输入
您的程序必须从标准输入读取数据并将结果写入标准输出。
输入
第 1 行: ñ,要分析的温度数量

第 2 行:带有ñ 温度表示为从 -273 到 5526 的整数

输出
如果未提供温度,则显示 0(零)。否则,显示最接近 0 的温度。
约束
0≤ ñ < 10000
例子
输入
5
1 -2 -8 4 5
输出
1


洛谷刷烦了,换换口味

import sys
import math

# Auto-generated code below aims at helping you parse
# the standard input according to the problem statement.

t = []
min = 5527
n = int(input())  # the number of temperatures to analyse
for i in input().split():
    # t: a temperature expressed as an integer ranging from -273 to 5526
    t.append(int(i))
   # print(t)
    a = abs(int(i))
    if a < abs(min) :
        min = int(i)
    elif a == abs(min):
        min = max(int(i),min)
if len(t) != 0:
    print(min)
else:
    print("0")

# Write an answer using print
# To debug: print("Debug messages...", file=sys.stderr, flush=True)

codingame Horse-racing Duals

题目地址:https://www.codingame.com/ide/puzzle/horse-racing-duals

卡萨布兰卡的赛马场正在组织一种新型赛马:双人赛。在双人赛期间,只有两匹马将参加比赛。为了让比赛变得有趣,有必要尽量选择两匹实力相近的马匹。

编写一个程序,使用给定数量的强度,识别两个最接近的强度并用整数(≥ 0)显示它们的差异。

游戏输入

输入
第 1 行:编号ñ 马的

这 ñ以下几行:力量P我 每匹马。 P我 是一个整数。

输出
区别 D 在两个最接近的力量之间。 D 是大于或等于 0 的整数。
约束
1 < ñ < 100000
0 <P我 ≤ 10000000
例子
输入
3
5
8
9
输出
1


题目有较大的数据量,所以必然不能简单的遍历模拟,但也不麻烦,只需要做一个排序就可以了

n = int(input())
pi = []
for i in range(n):
    pi.append(int(input()))
pi.sort()
min = pi[1] - pi[0]
for i in range(1,len(pi)):
    if pi[i] - pi[i-1] < min:
        min = pi[i] - pi[i-1]
print(min)

欢迎来到parafish的个人博客,这里是一个正在努力的ctfer

路虽远,行则必至