CCF 真题--第二题--python

这篇博客涵盖了CCF编程竞赛中的多个Python题目,包括回收站选址、二十四点游戏、消除类游戏等,提供了参考解题思路和方法,旨在帮助读者提升Python编程和问题解决能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、回收站选址

# author: 周里昂

n = int(input())
pos = [tuple(map(int,input().split())) for j in range(n)]
score = [0] * 5

for i in range(n):
    if (pos[i][0]+1, pos[i][1]) in pos \
       and (pos[i][0]-1, pos[i][1]) in pos\
       and (pos[i][0], pos[i][1]+1) in pos\
       and (pos[i][0], pos[i][1]-1) in pos:
        
        sco = 0
        if (pos[i][0]+1, pos[i][1]+1) in pos:
            sco += 1
        if (pos[i][0]-1, pos[i][1]-1) in pos:
            sco += 1
        if (pos[i][0]+1, pos[i][1]-1) in pos:
            sco += 1
        if (pos[i][0]-1, pos[i][1]+1) in pos:
            sco += 1
        score[sco] += 1
        
for i in range(5):
    print(score[i])

2、小明种苹果(续)
参考此方法

n = int(input())
lst = [0] * n
T, D, E = 0, 0, 0
for i in range(n):
    tmp = list(map(int, input().split()))[1:]
    for j in tmp[1:]:
        if j <= 0:
            tmp[0] += j
        # 当统计个数小于疏果后个数,则发生了苹果掉落
        elif tmp[0] > j:
            if lst[i] != 1:
                D += 1
                lst[i] = 1
            tmp[0] = j
    T += tmp[0]

for i in range(len(lst)):
    prev = i-1
    if prev < 0:
        prev += len(lst)
    next = i+1
    if next > len(lst) - 1:
        next -= len(lst)
    if lst[prev] == lst[i] == lst[next] == 1:
        E += 1

print(T,D,E)

3、二十四点

# author: 周里昂

n = int(input())
exp = [input().replace('x', '*').replace('/', '//') for i in range(n)]

for i in exp:
    if int(eval(i)) == 24:
        print('Yes')
    else:
        print('No')

4、小明放学

# author: 周里昂

# 信号灯变化:红 -> 绿 -> 黄 -> 红
r, y, g = map(int,input().split(' '))
n = int(input())

# 信号灯的周期
s = r + y + g

# 已经花费的时间
time = 0

for i in range(n):
    k, t = map(int,input().split(' '))

    if k == 0:
        time += t

    elif k == 1:
        # 当花费的时间超过了开始时红灯剩余时间
        if t <= time:
            # 当前信号灯时间内已经过去的时间
            ps = (time-t) % s
            if g <= ps < s:
                # 信号灯周期时间 - 已过去的时间 = 剩余的所需等待时间
                time += s - ps
        else:
            time += t - time
    elif k == 2:
        # 当花费的时间超过了开始时黄灯剩余时间,以及后续等待红灯所需的时间
        if t + r <= time:
            ps = (time-t-r) % s
            if g <= ps &l
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值