第十届蓝桥杯大赛PythonC组

A:求和

在这里插入图片描述

暴力

count=0
for i in range(1,2020):
if (“2” in str(i)) or (“0” in str(i))or (“1” in str(i))or (“9” in str(i)):
print(i)
count+=i
print(count)
在这里插入图片描述

B:矩形切割

在这里插入图片描述

暴力:用个while循环,找min(width,length),直到有一个为1

long = 2019
width = 324
count=0
while long!=1 and width !=1:
    if long>width:
        long = long - width
        count+=1
    elif long==width:
        long,width=0,0
        count+=1
        break
    else:
        width = width -long
        count+=1

count+=(long or width)#剩下的1X(width or long)块切为1X1,1X1...
print(count)

在这里插入图片描述

不同子串

在这里插入图片描述

这题好像在B组见了哈,直接暴力,用切片
s=“0100110001010001”
se=set()
for i in range(len(s)):
for j in range(i+1,len(s)+1):
se.add(s[i:j])
print(len(se))
在这里插入图片描述

D:质数

在这里插入图片描述

求质数.暴力

count=1
flag = False
for i in range(3,10000000):
    for j in range(2,i):
        if i%j==0:
            flag = True
            break
    if flag == True:
        flag=False
        continue
    else:
        print(i)
        count+=1
    if count == 2019:
        print(i)
        break

在这里插入图片描述

E:最大降雨量

在这里插入图片描述

感觉好像数学题
思路:7个数最小值为1+2+。。+7,中位数为4,最大值为43+。。+49=51
每个星期的中位数都在4-51来回变化。盲猜每个星期中位数差不多的时候为最大值,应该是3小+4大这样的组合在这里插入图片描述

F:旋转(15分)

在这里插入图片描述
在这里插入图片描述

hang,lie = [int(i) for i in input().split()]
m=[]
for i in range(hang):
   m.append([int(i) for i in input().split()])
for j in range(lie):
    for i in range(hang-1,-1,-1):
        print(m[i][j],end=" ")
    print()

在这里插入图片描述

G:外卖店优先级(20)

在这里插入图片描述

她来了她又来了,前几天刚栽倒B组这个,要勇敢尝试哈?
新鲜在这里插入图片描述
永远读不懂题系列???????????

N,M,T=[int(i) for i in input().split()]
times=[[0 for _ in range(N)]for i in range(T)]
for i in range(M):
    time,dian=[int(i) for i in input().split()]
    times[time-1][dian-1]+=1
dian=[0 for i in range(N)]
for i in range(T):
    for j in range(N):
        if times[i][j]!=0:
            dian[j]+=2*times[i][j]
        elif dian[j]!=0:
            dian[j]-=1
count = 0
for i in dian:
    if i >5:
        count+=1

print(count)
    
        

hhhh真过不去了呗,也看不了测试用例
麻了

H:人物相关性分析20

在这里插入图片描述

这个在B组也没写出来不会

k = int(input())
s = input()
A = []
index = 0
begin=0
while (index != -1) and (begin!=len(s)):
    index = s.find("Alice",begin)
    begin=index+1
    if index ==0:
        if s[index+5].isalpha():
            continue
        else:
            A.append(index)
    elif index+5==len(s):
        if s[index-1].isalpha():
            continue
        else:
            A.append(index)
    else:
        if (not s[index+5].isalpha()) and (not s[index-1].isalpha()):
            A.append(index)

B = []
index = 0
begin=0
while (index != -1) and (begin!=len(s)):
    index = s.find("Bob",begin)
    begin=index+1
    if index ==0:
        if s[index+3].isalpha():
            continue
        else:
            B.append(index)
    elif index+5==len(s):
        if s[index-1].isalpha():
            continue
        else:
            B.append(index)
    else:
        if (not s[index+3].isalpha()) and (not s[index-1].isalpha()):
            B.append(index)
count=0
print(A,B)
for i in range(len(B)):
    for j in range(len(A)):
        if B[i]>A[j] and B[i]-A[j]-5<=k:
                count+=1
        else:
            continue
for i in range(len(A)):
    for j in range(len(B)):
        if B[j]<A[i] and A[i]-B[j]-3<=k:
                count+=1

print(count)

I:等差数列25

在这里插入图片描述

终于看见个能写了的,求最小差,再求个数

def cal(num,cha):
    summ = 0
    for i in range(1,n):
        summ+=(num[i]-num[i-1])//cha-1
    return summ
n = int(input())
li = [int(i) for i in input().split()]
li.sort()
minn = li[1]-li[0]
cha=[]
for i in range(n-1):
    cha.append(li[i+1]-li[i])
cha.sort()
if cha[0]==0:
    print(n)
else:
    print(cal(li,cha[0])+n)

在这里插入图片描述

J:扫地机器人25

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

感觉还是尽可能的机器人活动区域差不多大,最边上的机器人肯定要把边上打扫了

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值