A:求和
暴力
count=0
for i in range(1,2020):
if (“2” in str(i)) or (“0” in str(i))or (“1” in str(i))or (“9” in str(i)):
print(i)
count+=i
print(count)
B:矩形切割
暴力:用个while循环,找min(width,length),直到有一个为1
long = 2019
width = 324
count=0
while long!=1 and width !=1:
if long>width:
long = long - width
count+=1
elif long==width:
long,width=0,0
count+=1
break
else:
width = width -long
count+=1
count+=(long or width)#剩下的1X(width or long)块切为1X1,1X1...
print(count)
不同子串
这题好像在B组见了哈,直接暴力,用切片
s=“0100110001010001”
se=set()
for i in range(len(s)):
for j in range(i+1,len(s)+1):
se.add(s[i:j])
print(len(se))
D:质数
求质数.暴力
count=1
flag = False
for i in range(3,10000000):
for j in range(2,i):
if i%j==0:
flag = True
break
if flag == True:
flag=False
continue
else:
print(i)
count+=1
if count == 2019:
print(i)
break
E:最大降雨量
感觉好像数学题
思路:7个数最小值为1+2+。。+7,中位数为4,最大值为43+。。+49=51
每个星期的中位数都在4-51来回变化。盲猜每个星期中位数差不多的时候为最大值,应该是3小+4大这样的组合
F:旋转(15分)
hang,lie = [int(i) for i in input().split()]
m=[]
for i in range(hang):
m.append([int(i) for i in input().split()])
for j in range(lie):
for i in range(hang-1,-1,-1):
print(m[i][j],end=" ")
print()
G:外卖店优先级(20)
她来了她又来了,前几天刚栽倒B组这个,要勇敢尝试哈?
新鲜
永远读不懂题系列???????????
N,M,T=[int(i) for i in input().split()]
times=[[0 for _ in range(N)]for i in range(T)]
for i in range(M):
time,dian=[int(i) for i in input().split()]
times[time-1][dian-1]+=1
dian=[0 for i in range(N)]
for i in range(T):
for j in range(N):
if times[i][j]!=0:
dian[j]+=2*times[i][j]
elif dian[j]!=0:
dian[j]-=1
count = 0
for i in dian:
if i >5:
count+=1
print(count)
hhhh真过不去了呗,也看不了测试用例
H:人物相关性分析20
这个在B组也没写出来不会
k = int(input())
s = input()
A = []
index = 0
begin=0
while (index != -1) and (begin!=len(s)):
index = s.find("Alice",begin)
begin=index+1
if index ==0:
if s[index+5].isalpha():
continue
else:
A.append(index)
elif index+5==len(s):
if s[index-1].isalpha():
continue
else:
A.append(index)
else:
if (not s[index+5].isalpha()) and (not s[index-1].isalpha()):
A.append(index)
B = []
index = 0
begin=0
while (index != -1) and (begin!=len(s)):
index = s.find("Bob",begin)
begin=index+1
if index ==0:
if s[index+3].isalpha():
continue
else:
B.append(index)
elif index+5==len(s):
if s[index-1].isalpha():
continue
else:
B.append(index)
else:
if (not s[index+3].isalpha()) and (not s[index-1].isalpha()):
B.append(index)
count=0
print(A,B)
for i in range(len(B)):
for j in range(len(A)):
if B[i]>A[j] and B[i]-A[j]-5<=k:
count+=1
else:
continue
for i in range(len(A)):
for j in range(len(B)):
if B[j]<A[i] and A[i]-B[j]-3<=k:
count+=1
print(count)
I:等差数列25
终于看见个能写了的,求最小差,再求个数
def cal(num,cha):
summ = 0
for i in range(1,n):
summ+=(num[i]-num[i-1])//cha-1
return summ
n = int(input())
li = [int(i) for i in input().split()]
li.sort()
minn = li[1]-li[0]
cha=[]
for i in range(n-1):
cha.append(li[i+1]-li[i])
cha.sort()
if cha[0]==0:
print(n)
else:
print(cal(li,cha[0])+n)
J:扫地机器人25
感觉还是尽可能的机器人活动区域差不多大,最边上的机器人肯定要把边上打扫了