😋今日题目😋
1.金币
k=int(input())
l=0
r=10001
while l+1!=r:
mid=(l+r)//2
if (mid+1)*mid//2<k:
l=mid
else:
r=mid
s=r*(r+1)*(2*r+1)//6-(r*(r+1)//2-k)*r
print(s)
#金币
2.优秀的拆分
n=int(input())
if n%2==1:
print(-1)
else:
t=[]
x=bin(n)[2:][::-1]
for i in range(len(x)):
if 2**i*int(x[i])>0:
t.append(2**i*int(x[i]))
t=t[::-1]
for j in range(len(t)-1):
print(t[j],end=' ')
print(t[-1])
3.穿越雷区
n=int(input())
dp=[]
for i in range(n):
t=input().split()
if 'A' in t:
st=(i,t.index('A'))
if 'B' in t:
end=(i,t.index('B'))
dp.append(t)
pre={}
dx=[-1,1,0,0]
dy=[0,0,1,-1]
queue=[st]
def judge(x,y,dir):
if 0<=x<=n-1 and 0<=y<=n-1:
if dir!=dp[x][y]:
if (x,y) not in pre.keys():
return True
return False
def bfs():
while queue:
tmp=queue.pop(0)
dir=dp[tmp[0]][tmp[1]]
if tmp==end:
step=1
while pre[tmp]!=st:
tmp=pre[tmp]
step+=1
print(step)
break
else:
for i in range(4):
nx,ny=tmp[0]+dx[i],tmp[1]+dy[i]
if judge(nx,ny,dir):
queue.append((nx,ny))
pre[(nx,ny)]=tmp
else:
print('-1')
bfs()
#穿越雷区
4.蓝肽子序列
a=input()
b=input()
import re
def f(x):
t=[]
for i in range(len(x)):
if ord(x[i])<97:
t.append(i)
r=[]
for i in range(len(t)-1):
r.append(x[t[i]:t[i+1]])
r.append(x[t[-1]:])
return r
def same(x,y):
return 1 if x==y else 0
a=f(a)
b=f(b)
#dp[i][j]代表a以下标i为结尾的字符串和b以下标为j结尾的字符串的最长子序列长度
if len(a)<len(b):
a+=[0]*abs(len(b)-len(a))
else:
b+=[0]*abs(len(b)-len(a))
a.insert(0,'*')
b.insert(0,'@')
L=len(a)
dp=[[0]*(L) for i in range(L)]
for i in range(1,L):
for j in range(1,L):
if a[i]==b[j]:
dp[i][j]=dp[i-1][j-1]+1
else:
dp[i][j]=max(dp[i][j-1],dp[i-1][j])
ans=0
for i in dp:
ans=max(ans,max(i))
print(ans)
#蓝肽序列
🚀写在最后
蓝桥杯临近 你是否已经做好了充足的准备?
借用小羊的一句话“只要路是对的,就不害怕遥远”。