Zweite vergangene Frage
Ich hatte keine Zeit, also wiederhole ich die einfachen Fragen der Vergangenheit.
Ändern Sie die Ausgabe gemäß x.
answerA.py
x=int(input())
print("ABC" if x<1200 else "ARC")
Zählen Sie von vorne und von hinten.
answerB.py
s=input()
n=len(s)
a,b=0,0
for i in range(n):
if s[i]=="A":
a=i
break
for i in range(n-1,-1,-1):
if s[i]=="Z":
b=i
break
print(b-a+1)
Hier ist der überarbeitete Code. (Es ist eine Grundfunktion, aber ich erinnere mich nicht, dass es schlecht ist ...)
answerB_better.py
s = input()
#Suchen Sie von vorne nach dem Index und von hinten nach dem Index und geben Sie den ersten Index zurück
print(s.rindex('Z') - s.index('A') + 1)
Da Sie die Augen frei wählen können, ist es am besten, in der Reihenfolge 6 → 5 zu wählen. Wenn Sie über den Quotienten geteilt durch 11 nachdenken, ist dies in Ordnung
answerC.py
x=int(input())
ans=0
ans+=(x//11)*2
x-=(x//11)*11
if x==0:
print(ans)
elif x<=6:
print(ans+1)
else:
print(ans+2)
Es war ein grünes Problem und es war das zweite Mal. Wenn ich also nicht aufpasste, dauerte es länger als erwartet.
Es ist klar, dass es die maximale Anzahl von Karten ** ist, alle Elemente einzeln zu belassen, was Sie dazu motiviert. Wenn Sie hier 3 aus dem Fragensatz auswählen, werden Sie 2 davon essen, sodass Sie sehen können, dass die Auswahl aus denjenigen, die diese 2 abdecken, der beste Weg ist, dies zu erreichen. Daher halte ich es nicht für schwierig, auf die Idee zu kommen, dass ** die Anzahl der versicherten Personen als separate Gruppen betrachtet werden sollte. Wenn beispielsweise eine Karte "1 1 1 2 2 3 4 4 4 5 5" vorhanden ist, wird sie in "1 2 3 4 5" und "1 1 2 4 4 5" und die letztere Gruppe von Abdeckungen unterteilt Erwägen Sie, die Zahlen der Reihe nach zu essen. Wenn Sie 1 und 1 (gleiche Anzahl) in der letzteren Gruppe essen möchten, können Sie zunächst 3 zusammen mit 1 in der ersten Gruppe auswählen. Wenn Sie versuchen, 2 und 4 zu essen, können Sie sowohl 2 als auch 4 essen, indem Sie ** 2 oder 4 der vorherigen Gruppe auswählen **. Sie können 2 und 5 auf die gleiche Weise essen, so dass Sie die letztere Gruppe von Kopfbedeckungen auffressen und die maximale Anzahl von Karten erreichen können, 5. Wenn die Anzahl der leidenden Gruppen jedoch ungerade ist, müssen Sie nur eine aus der vorherigen Gruppe ** essen, da nur zwei Personen ** essen dürfen (z. B. wenn "1 1 2 3"). ). Basierend auf der obigen Überlegung kann die maximale Anzahl von Karten erhalten werden, indem gezählt wird, was abgedeckt ist, und durch die Gesamtgleichmäßigkeit und Seltsamkeit klassifiziert wird. (Zu diesem Zeitpunkt können Sie sortieren und gruppieren, um sie ordentlich in Gruppen zu unterteilen. ** Die Funktion "Gruppieren nach" ist sehr praktisch **.)
answerD.py
n=int(input())
def groupby(a):
a2=[[a[0],1]]
for i in range(1,len(a)):
if a2[-1][0]==a[i]:
a2[-1][1]+=1
else:
a2.append([a[i],1])
return a2
b=groupby(sorted([int(i) for i in input().split()]))
l=len(b)
co=0
for i in range(l):
co+=(b[i][1]-1)
if co%2==0:
print(l)
else:
print(l-1)
Recommended Posts