第十一届蓝桥杯Python刷题笔记

第十一届届蓝桥杯python组做题笔记

菜鸡一枚,如有错误可在评论区指正,不胜感激
个别难题做不出来可能就放弃了

PS:感谢大佬域外风雪的文章给我提供了很多题目的思路

A:门牌制作

在这里插入图片描述
手算也行就是累点,或者用列表排序做

 s=0#A:制作门牌
 for i in range(2021):
 	s+=str(i).count('2')
 print(s)#624

B:寻找2020

在这里插入图片描述
文件在这2020.txt

f=open('./2020.txt')#B:寻找2020
len=len(f.readline())-1
f.close()#先初始化一遍,不然下一个readline()会从第二行开始
s=0
f=open('./2020.txt')
m=[[0]*300 for _ in range(300)]
a=f.readlines()
for i in range(len):
    for j in range(len):
        m[i][j]=list(a[i])[j]
for i in range(len):
    for j in range(len):
        if(j+3<300):
            if(m[i][j]=='2' and m[i][j+1]=='0' and m[i][j+2]=='2' and m[i][j+3]=='0'):
                s+=1
        if(i+3<300):
            if(m[i][j]=='2' and m[i+1][j]=='0' and m[i+2][j]=='2' and m[i+3][j]=='0'):
                s+=1
        if(i+3<300 and j+3<300):
            if(m[i][j]=='2' and m[i+1][j+1]=='0' and m[i+2][j+2]=='2' and m[i+3][j+3]=='0'):
                s+=1
f.close()
print(s)#16520

C:跑步锻炼

在这里插入图片描述
我一开始还自己写闰年判断函数,结果发现python居然有datetime这种好东西

import datetime   #C:跑步训练 
a=datetime.date(2000,1,1)
b=datetime.date(2020,10,1)
days=datetime.timedelta(days=1)
s=0
while(a<=b):
    if(a.day==1 or a.weekday()==0):
        s+=2
    else:
        s+=1
    a+=days
print(s)#8879

D:蛇形填数

在这里插入图片描述
可以用Excel暴力排(费时费力)
也可以找规律,容易看出第n个中间的数是第n-1个数加上4*(n-1)
算法就不会了…

m=[0]*20
m[0]=1
for i in range(1,20):
    m[i]=m[i-1]+4*i
print(m[19])#761

F:成绩统计

在这里插入图片描述
在这里插入图片描述
白给题

n=int(input())#F:成绩统计
a=0
b=0
for i in range(n):
    s=int(input())
    if s>=60:
        a+=1
    if s>=85:
        b+=1
print(str(round(a/n*100))+'%')
print(str(round(b/n*100))+'%')

G:单词分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
白给题+1

word=list(input())#G:单词分析
s=0
for i in word:
    if(s<word.count(i)):
        s=word.count(i)
        max=i
print(max)
print(s)

H:数字三角形

在这里插入图片描述
在这里插入图片描述
最终向左和向右的次数不能超过1,也就是最后一个数要么在中间要么再中左或中右的位置

n=int(input())
m=[]
for i in range(n):
    m.append(list(map(int,input().split())))
print(m)
for i in range(n):
    for j in range(i):
        m[i][j]+=max(m[i-1][j-1],m[i-1][j])
if(n%2==0):
    print(max(m[n-1][n//2],m[n-1][n//2-1]))
else:
    print(m[n-1][n//2])

I:平面切分

在这里插入图片描述
每有一条平行线则平面+1,每条线每和其他线产生一个交点,则新增平面数=产生交点数+1
初版代码先放这(提供下思路,后面还会修改)

def px(a1,a2,b1,b2):
    if(a1==a2 and b1!=b2):
        return 1
    else:
        return 0

def xj(a1,a2):
    if(a1!=a2):
        return 1
    else:
        return 0

n=int(input())
a=[0]*n
b=[0]*n
x=[0]*n
y=[0]*n
s=2
point=0
for i in range(n):
    a[i],b[i]=map(int,input().split())
for i in range(n):
    if(i>0):
        for j in range(i):
            if(px(a[i],a[j],b[i],b[j])):#如果平行则平面+1
                s+=1
            elif(xj(a[i],a[j])):
                x[i]=(b[i]-b[j])/(a[j]-a[i])
                y[i]=a[i]*x[i]+b[i]
                if(x[i]==x[j] and y[i]==y[j]):
                    point+=1
                s+=point+1
print(s)
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值