La deuxième question que j'ai résolue auparavant
Vous pouvez comprendre si vous pensez à la figure
answerA.py
n,m=map(int,input().split())
print((n-1)*(m-1))
Indice négatif pratique
answerB.py
s=input()
l=len(s)
print(s[0]+str(l-2)+s[-1])
Impression difficile la première fois que je l'ai vue Si vous le divisez en trois parties: un multiple de 4 (①), un multiple de 2 qui n'est pas un multiple de 4, (②) et un nombre impair (③), vous pouvez venir avant et après ①, et ① avant et après ②. Il doit être ②, et ① doit venir avant et après ③. Par conséquent, ** première ligne à partir de ③, qui a des restrictions strictes **. Si vous y réfléchissez un instant, disposer alternativement ① et ③ est une manière d'arranger pour que ③ satisfasse la condition, mais ① est moins utilisé. Compte tenu d'un tel arrangement, cela devient comme suit. (Des cas se produiront.)
J'ai essayé de le résoudre rapidement et l'instruction if est devenue redondante, alors je l'ai réécrite dans le commentaire.
answerC.py
n=int(input())
a=[int(i) for i in input().split()]
x,y,z=0,0,0
for i in range(n):
if a[i]%4==0:
x+=1
elif a[i]%2==0:
y+=1
else:
z+=1
if y>0:
if z<=x:
print("Yes")
else:
print("No")
else:
if z<=x+1:
print("Yes")
else:
print("No")
'''
if y==0:
x+=1
if z<=x:
print("Yes")
else:
print("No")
'''
Personnellement, C était plus difficile, et je pense l'avoir vu avant un problème similaire à celui-ci.
N types de couleurs sont donnés et peints de manière à être connectés verticalement et horizontalement. À ce stade, vous pouvez décider comment appliquer ** par vous-même , afin de pouvoir l'appliquer horizontalement afin que tous soient connectés (choisissez celui que vous aimez, horizontalement ou verticalement !!). À ce stade, les lignes paires (à partir de 0) sont peintes de gauche à droite et les lignes impaires sont peintes de droite à gauche. En outre, il est bon de conserver des informations sur la couleur que vous peignez actuellement. ( Il est pratique de conserver une information distincte sur les informations dont vous disposez pour tracer les problèmes **)
De plus, comme il est pratique de pouvoir boucler dans la direction opposée avec le récemment appris for j in range (w-1, -1, -1):
, je vais l'utiliser activement. (Il est décidé de décrémenter la variable de boucle avec le troisième argument)
answerD.py
h,w=map(int,input().split())
n=int(input())
a=list(map(int,input().split()))
hw=[[0 for i in range(w)] for i in range(h)]
k=0#Où cherchez-vous maintenant
for i in range(h):
if i%2==0:
for j in range(w):
if a[k]==0:
k+=1
hw[i][j]=k+1
a[k]-=1
else:
for j in range(w-1,-1,-1):
if a[k]==0:
k+=1
hw[i][j]=k+1
a[k]-=1
for i in range(h):
print(" ".join(map(str,hw[i])))
Recommended Posts