Die Überprüfung ist ziemlich spät, aber ich habe alle gelöst, daher möchte ich einen Artikel schreiben. Ich habe vier Abschlüsse gemacht, aber mein Eindruck war, dass ich fünf abschließen wollte, weil EF (insbesondere F) eine einfache Zeit war.
answerA.py
m1,d1=map(int,input().split())
m2,d2=map(int,input().split())
if m1==m2:
print(0)
else:
print(1)
Es wird nur festgestellt, ob m1 und m2 unterschiedlich sind.
answerB.py
x=[]
for i in range(1,50001):
x.append(int(i*1.08))
n=int(input())
for i in range(50000):
if n==x[i]:
print(i+1)
break
else:
print(":(")
Die Problemstellung war etwas lang, deshalb habe ich mir etwas zu viel Zeit genommen. Packen Sie alle möglichen Zahlen in das erste Array x und ändern Sie die Ausgabe abhängig davon, ob es eine entsprechende Zahl gibt. Python ist praktisch, da es einfach ist, mit der else-Anweisung zu schreiben, wenn die Ausgabe geändert wird, je nachdem, ob sie unterbrochen werden soll oder nicht.
answerC.py
x=int(input())
y=x//100
z=x%100
if z<=y*5:
print(1)
else:
print(0)
Da es sich um 100 + k handelt (eine ganze Zahl von 0 <= k <= 5), können Sie sehen, dass Sie bis zu x // 100 Artikel kaufen können. (Es ist notwendig, es zu maximieren, da wir den Bereich des Ausdrucks im folgenden Satz maximieren möchten.) Wenn zu diesem Zeitpunkt x% 100 innerhalb von 0 ~ (x // 100) * 5 liegt, ist es genau X Yen. Da dies möglich ist, wird es ausgegeben, je nachdem, ob dies möglich ist oder nicht. (Ich habe meinen Verstand mehr als das übliche C-Problem benutzt, aber ich war überrascht, dass eine gute Anzahl von Menschen durchgekommen ist.)
answerD.py
n=int(input())
s=[int(i) for i in input()]
def my_index(l,x,ind):
'''
l-Iterierbares Objekt
x-Wert, den Sie finden möchten
ind-Index, nach dem Sie suchen möchten
Rückgabewert-Index, wenn es existiert, wenn es nicht existiert-1
'''
global n
if ind==n:
return -1
for i in range(ind,n):
if l[i]==x:
return i
else:
return -1
c=0
for i in range(10):
x1=my_index(s,i,0)
if x1!=-1:
for j in range(10):
x2=my_index(s,j,x1+1)
if x2!=-1:
for k in range(10):
if my_index(s,k,x2+1)!=-1:
c+=1
print(c)
Ich war verwirrt von N, aber am Ende gibt es nur 10 * 10 * 10 3 Ziffern, so dass ich sehen kann, dass ich nur alle überprüfen muss. Ich habe die Funktion my_index jedoch selbst erstellt, da die Verwendung der Indexfunktion von Python einen Fehler auslöst, wenn das Element in diesem Objekt nicht vorhanden ist. Sobald Sie dies wissen, können Sie von vorne herausfinden, ob 10 * 10 * 10 verschiedene Passwörter in der Reihenfolge vorhanden sind.
Wenn Sie s als Zeichenfolge behandeln, ohne es aufzulisten, können Sie es durch die Suchfunktion ersetzen, ohne die Funktion my_index vorzubereiten.
answerE.py
#Von vorne gezählt, ist das, was passiert, eindeutig bestimmt
import collections
n=int(input())
b=[[0,0,0]]
a=[int(i) for i in input().split()]
def my_index(l, x):
if x in l:
return l.index(x)
else:
return -1
for i in range(n):
k=my_index(b[-1],a[i])
if k==-1:
print(0)
break
b.append([b[-1][j]+1 if j==k else b[-1][j] for j in range(3)])
else:
x=1
for i in range(n):
x=x*b[i].count(a[i])%1000000007
print(x)
Der Eindruck, dass E am schwierigsten war. (Ich habe es gelöst, nachdem ich die Antwort gesehen hatte.) Wenn die Anzahl der Personen, die Hüte jeder Farbe tragen, als ai, bi, ci und xi, yi, zi in absteigender Reihenfolge der Anzahl der Personen festgelegt wird, werden die Bemerkungen der 1. bis i-ten Personen als Grundlage verwendet. Dies ermöglicht es, die Werte von xi, yi und zi eindeutig zu bestimmen. (Einzelheiten finden Sie unter Antwort. Sie können dies herausfinden, indem Sie Ihre Hand bewegen.) Die Sequenz b enthält die Kombinationen von xi, yi und zi bis zur i-ten Person (am 1. Ursprung), und durch Verschieben von i von 0 nach n-1 wird die Kombination für jedes i erhalten. Wenn hier die Anzahl der in der i + 1-ten Aussage genannten Personen (a [i]) in b [i] existiert, ist die Anzahl der Hüte jeder Farbe in der i + 1-ten Aussage und der i-ten Person Obwohl es keinen Widerspruch gibt, wird das Element der entsprechenden Anzahl von Personen um +1 erhöht und kann b [i + 1] sein. Es gibt jedoch einen Fall (k = -1), in dem die Anzahl der Hüte jeder Farbe bis zur i-1. Person nicht mit der Bemerkung der i-ten Person übereinstimmt. In diesem Fall wird 0 ausgegeben und eine Unterbrechung durchgeführt. Bis zu diesem Punkt kann die Anzahl der Farbhüte für jedes i berechnet werden, aber wenn es in b [i] mehrere a [i] gibt, werden in der i + 1-ten Anweisung mehrere Farben erwähnt. Sie finden die Antwort, indem Sie die Möglichkeiten in jedem b [i] mit a [i] multiplizieren.
answerF.py
import math
t1,t2=map(int,input().split())
a1,a2=map(int,input().split())
b1,b2=map(int,input().split())
#Relative Geschwindigkeit
c1,c2=a1-b1,a2-b2
#Weit entfernt
d1,d2=abs(c1*t1),-abs(c2*t2)
if (c1>0 and c2>0) or (c1<0 and c2<0) or d1+d2>0:
print(0)
elif d1+d2==0:
print("infinity")
else:
x=d1//(-(d1+d2))
y=d1%(-(d1+d2))
if y==0:
print(2*x)
else:
print(2*x+1)
Ich habe während des Wettbewerbs keine Probleme gesehen, war aber sehr enttäuscht, weil es nach dem Wettbewerb überraschend einfach zu lösen war. Da wir uns treffen werden, sollten wir die relative Position berücksichtigen und zuerst die relative Geschwindigkeit (c1 und c2) ermitteln. Von hier aus werden wir die Bedingungen abzweigen.
Erstens gibt es unter Berücksichtigung von Mustern, die keine endlichen Zeiten sind, die obigen vier Muster. Wenn c1 und c2 beide positiv sind (Muster ①) und c1 und c2 beide negativ sind (Muster ②), sind sie immer getrennt und treffen sich nicht. Selbst wenn die relative Positionsverschiebung zum Zeitpunkt T1 größer ist als die relative Positionsverschiebung zum Zeitpunkt T2 (Muster ③), werden sie immer voneinander getrennt, sodass sie sich nicht treffen. Wenn die relative Positionsverschiebung in der T1-Zeit dieselbe ist wie die relative Positionsverschiebung in der T2-Zeit (Muster ④), ändert sich die relative Position in einem Zyklus von T1 und T2 nicht, sodass sie unbegrenzt fortgesetzt wird.
Betrachten Sie abschließend den Fall einer endlichen Anzahl von Treffen. Zu diesem Zeitpunkt ist der Abstand zwischen T1 und T2 für positiv und negativ unterschiedlich. Nehmen Sie also den absoluten Wert und machen Sie es sich leicht, ihn als positiv für T1 und negativ für T2 zu betrachten. (Der Rest der Erklärung wird handgeschrieben.) Wie oben erwähnt, konnte ich in allen Fällen die Anzahl der Begegnungen zählen.
Schauen wir uns vorerst das letzte Problem an. Machen Sie ein festes Urteil darüber, ob es gelöst werden kann oder nicht. (Manchmal lasse ich es fallen, ohne ein Problem zu sehen, das lösbar zu sein scheint, und manchmal versuche ich, ein scheinbar schwieriges Problem zu lösen.) Es ist dasselbe wie die Mathematik, um eine Prüfung abzulegen, zu überlegen und zu experimentieren, selbst wenn Sie ungeduldig sind.
Recommended Posts