【考前19天】【python蓝桥杯备赛】经典例题

前言

考前19天,今天增加4道左右中等难度试题

1、回文日期

在这里插入图片描述

import datetime
date=input()
y=int(date[0:4])
m=int(date[4:6])
d=int(date[6:])
dd=datetime.date(y,m,d)//转成日期格式
flag=True
for i in range(9999999):
    dd=dd+datetime.timedelta(days=1)//每次加一天
    strdd=str(dd).replace("-",'')//变换格式
    if strdd==strdd[::-1]://满足倒序==对称
        if flag:
            print(strdd)
            flag=False
        if strdd[0]==strdd[2]==strdd[-1]==strdd[-3] and strdd[1]==strdd[3]==strdd[-2]==strdd[-4]://回文判断
            print(strdd)
            break

这题要了解date库,以及datetime格式

2、练习

在这里插入图片描述

print("ABC")

在这里插入图片描述

别说这题上来忘记要给字符串+“”了

3、分糖果

在这里插入图片描述

N=int(input())
s=list(map(int,input().split()))
ans=sum(s)//初试糖果总数
a=s[0]//2//第一个孩子给出的糖果
while len(s)!=s.count(s[0]):
    for i in range(N):
        if i+1==N:
            i=-1
        s[i+1],a=s[i+1]+a-s[i+1]//2,s[i+1]//2//赋值
        if s[i+1]%2!=0:
            s[i+1]+=1
ans=sum(s)-ans
print(ans)

count的意思是,参数在整个list中出现的次数,当所有元素值相同时,等于list长度。

4、全排列

在这里插入图片描述

from itertools import permutations as pt
N=list(input())
for i in pt(N):
  print("".join(i))

这题和之前的很相似,就是通过使用permutations,枚举排列每种可能

5、Excel地址

在这里插入图片描述

import os
import sys

# 请在此输入您的代码
n=int(input())
ans=[]
while n!=0:
  if n%26==0:
    ans.append(26)//整除就是26
    n=n//26-1
  else:
    ans.append(n%26)//有余数就+余数进去
    n//=26
for i in range(len(ans)):
  print(chr(ans[len(ans)-i-1]+64),end='')

这题append是添加在列表末尾,所以循环时从末尾向前,因为进位是除的次数越多,值就越大,最先出来的就是除的次数最多的。

6、绳结

在这里插入图片描述

a=[[0 for i in range(101)] for i in range(101)]//初始化矩阵
a[1][1]=1//绳子1和绳子1打结的方式只有一种
for i in range(2,len(a))://遍历矩阵,加绳子
  for j in range(1,len(a[i]))://圈数
    if i<j://节数要大于圈数
      break
    else:
      a[i][j]=a[i-1][j]*(2*i-2)/(2*i-1)+a[i-1][j-1]/(2*i-1)//动态规划
Max=0
Max_num=1
for i in range(1,101):
  if Max<a[100][i]://查找最大概率位置
    Max_num=i
    Max=a[100][i]
print(Max_num)

这题确实挺难,动态规划有的时候还好,有时想也想不出来。

7、排列字母

在这里插入图片描述

b="WHERETHEREISAWILLTHEREISAWAY"
c=[]
for i in b:
  c.append(i)
c.sort()
for i in c:
  print(i,end="")

这题就考一个sort排序,比肉眼快

8、修建灌木

在这里插入图片描述

n=int(input())
for i in range(n):
  ld=i-0//左边界
  rd=n-i-1//右边界
  print(2*max(ld,rd))//来回的距离所以*2

9、顺子日期

在这里插入图片描述

res=0
for i in range(1,13):
  for j in range(1,32):
    s="2022%02d%02d" %(i,j)
    if "012" in s or "123" in s://月份和日号之间只有两种顺子
      res+=1
print(res)

建议大家先把思想转变过来,python中str是很容易做判断的,不需要一位一位排查

10、刷题统计

在这里插入图片描述

a,b,n=map(int,input().split())
week=a*5+b*2//每周做题数
days=(n//week)*7//周数*7
n%=week//剩余题数
if n<=5*a://工作日就干完了
  days+=n//a+(0 if n%a==0 else 1)
else://休息日还得加班
  days+=5
  n-=5*a
  days+=n//b+(0 if n%b==0 else 1)
print(days)

结语

今天刷了十八九道吧,但中等没刷,可能是有点疲惫吧,希望后面继续努力,减少看题解的速度。

猜你喜欢

转载自blog.csdn.net/weixin_53415043/article/details/129661638
今日推荐