碎碎念:
只剩下7天了,能写多少写多少,巩固已经学到的东西,其他的不管了,,每天两小时,每天搞懂两题,并且写blog。
写过一次的题目再写就是快很多,理解也更快了。我就一点点捡芝麻!
1.翻转
"""
难懂的是题目,,,
遇到“夹心”类型的三个数直接翻转,计数器+1
直接计算中间的数据就可以
学习多组数据同种操作——直接在输入的for里解决!
"""
n =int(input())
for i in range(n):
a = list(input()) # 数据1
b = list(input()) # 数据2,准备翻转的
cnt = 0
for j in range(1,len(a)-1): # 遍历一次就能直接看是否满足题意
if a[j] == b[j]: # 相同的不变
continue
# 不相同并且“夹心”的翻转
elif b[j-1] == b[j+1] and b[j-1] != b[j] and b[j+1] != b[j]:
b[j] = b[j-1]
cnt += 1 # 翻转一次计数器+1
if a == b:
print(cnt)
else:
print(-1)
2.货物摆放
"""
注意处理约数,用x**0.5+1缩小遍历范围,用x%i==0 和 n/i!=i(可以处理平方数) 筛选约数。
说不太清楚,但是可以理解,,,注意就完了,,用idle可以很快出结果
"""
n = 2021041820210418
#n = 4
def yueshu(x):
lst = []
for i in range(1,int(x**0.5+1)):
if x%i == 0:
lst.append(i)
if n / i != i: # 注意加上约数的另一半(大半边的约数,如1*9的9)
lst.append(n/i)
return lst
ys = yueshu(n)
l = len(ys)
cnt = 0
for i in range(l):
for j in range(l):
for z in range(l):
if ys[i]*ys[j]*ys[z] == n:
cnt += 1
print(cnt) #2430
3.数位排序
"""
自定义排序sorted的方法
用zip把原列表和对应数位和绑定
"""
n = int(input())
m = int(input())
lst = [i for i in range(1,n+1)]
suml = []
for i in lst:
tmp = 0
for j in str(i):
tmp += int(j)
suml.append(tmp)
fin = zip(lst,suml)
fin = sorted(fin,key=lambda x:x[1])
#print(fin)
print(fin[m-1][0]) # 注意结尾输出怎么写!!