知识点
1.输入大小写转小写
s = input().lower()
2.datetime的使用
from datetime import datetime, timedelta
dt1 = datetime(2023, 1, 1)#默认是2023-01-01 00:00:00
date = dt1.strftime('%Y%m%d')#格式化成20230101这种格式
dt1 += timedelta(days=1)#日期加1 2023-01-02 00:00:00
3.文件读取
4.字典序,cmp
from functools import cmp_to_key
def cmp(s1, s2):
if s1 + s2 <= s2 + s1:
return -1
else:
return 1
n = int(input())
a = []
for i in range(n):
a.append(input())
a.sort(key= cmp_to_key(cmp))
print("".join(a))
题目
1.lanqiao2417
str2 = "lanqiao"
s = input().lower()
if s == str2:
print("yes")
else:
print("no")
2.lanqiao3491
好在是填空,我直接暴力!
ans = 0
def islucky(s1, s2):
sum1 = 0
sum2 = 0
for i in range(len(s1)):
sum1 += int(s1[i])
sum2 += int(s2[i])
if sum1 == sum2:
return True
else:
return False
for i in range(1, 100000000):
s = str(i)
if len(s) % 2 == 1:
continue
else:
s1 = s[:len(s) // 2]
s2 = s[len(s)//2:]
if islucky(s1, s2):
ans += 1
3.lanqiao3492
from datetime import datetime, timedelta
st = '''5 6 8 6 9 1 6 1 2 4 9 1 9 8 2 3 6 4 7 7 5 9 5 0 3 8 7 5 8 1 5 8 6 1 8 3 0 3 7 9 2
7 0 5 8 8 5 7 0 9 9 1 9 4 4 6 8 6 3 3 8 5 1 6 3 4 6 7 0 7 8 2 7 6 8 9 5 6 5 6 1 4 0 1
0 0 9 4 8 0 9 1 2 8 5 0 2 5 3 3
'''
st = list(st.split())
#print(st)
dt1 = datetime(2023, 1, 1)#默认是2023-01-01 00:00:00
dt2 = datetime(2023, 12, 31)
res = 0
# 从20230101开始枚举到20231231
while dt2 >= dt1:
date = dt1.strftime('%Y%m%d')#格式化成20230101这种格式
num = 0
for i in range(len(st)):
if num == 8:#如果找到8位数字与当前日期相等res+1,同样日期算一个,直接break
res += 1
break
if date[num] == st[i]:#枚举每一个数字== date[num]
num += 1
dt1 += timedelta(days=1)#日期加1
print(res)
4.lanqiao 3493
print(sum(list(range(20230409))))
双周赛被薄纱了0.0
5.lanqiao17035
from functools import cmp_to_key
def cmp(s1, s2):
if s1 + s2 <= s2 + s1:
return -1
else:
return 1
n = int(input())
a = []
for i in range(n):
a.append(input())
a.sort(key= cmp_to_key(cmp))
print("".join(a))
6.lanqiao17028
我是没有想到快速幂过不了这道题0.0
t = int(input())
for i in range(t):
x, p = map(int, input().split())
c = 10
res = pow(x, p, c)
print(res)
7.lanqiao17029
思路:
看到答案是由01组合而成,x3 = a2-a1可以直接得到,x4 = a3-a2+x1....以此类推xn = an-1 - an-2 + xn-3 . 特殊情况,当只有两个方程的时候,只有三种情况。当方程数大于等于三个的时候,先枚举出前三种的情况,[0,0,x3], [0,1,x3],[1,1,x3],[1,0,x3],标识flag = 0表示[0,1,x3]可以,否则为[1,0,x3],根据xn = an-1 - an-2 + xn-3 .
n = int(input())
a = list(map(int, input().split()))
if n <=2:
if a[0] == 0:
print(0, 0)
elif a[0] == 1:
print(0, 1)
else:
print(1, 1)
else:
x3 = a[1] - a[0]
flag = 0
if a[0] == 0:
temp = [0, 0, x3]
elif a[0] == 1:
temp = [0, 1, x3]
else:
temp = [1, 1, x3]
for i in range(2, n-1):
t = a[i]-a[i-1]+temp[i-2]
if 0<= t < 2:
temp.append(t)
else:
flag = 1
break
if a[-1] != temp[-1] + temp[-2]:
flag = 1
if flag == 1:
temp = [1, 0, x3]
for i in range(2, n-1):
temp.append(a[i]-a[i-1]+temp[i-2])
print(" ".join([str(i) for i in temp]))
8.lanqiao17026
思路:
只要x在max_dp[-1] 和min_dp[-1]之间就可以。其中:
min_dp[i]表示小蓝走到位置i时候的最小心情为多少。
max_dp[i]表示小蓝走到位置i的时候的最大心情为多少。
t = int(input())
def solve():
n,x = map(int, input().split())
a = [0] + list(map(int,input().split())) + [0]
min_dp = [0]*(n+2)
max_dp = [0]*(n+2)
min_dp[1] = max_dp[1] = a[1]
for i in range(2, n+2):
min_dp[i] = min(min_dp[i-1], min_dp[i-2]) + a[i]
max_dp[i] = max(max_dp[i-1], max_dp[i-2]) + a[i]
if min_dp[-1] <= x <= max_dp[-1]:
print("Yes")
else:
print("No")
for i in range(t):
solve()