Löse D, das gestern nicht gelöst werden konnte
** Gedanken ** Da $ K $ groß ist, scheint es, dass es nicht gelöst werden kann, wenn es nicht irgendwo geloopt ist → Lassen Sie uns die Schleife erkennen. Und es wird nach der Größe von $ K $ klassifiziert. Sie müssen lediglich eine Liste implementieren, um festzustellen, ob Sie uns besuchen, und eine Liste, um die Reihenfolge der Besuche aufzuzeichnen. Die erstere Liste verhindert Endlosschleifen und die letztere Liste erleichtert die spätere Implementierung.
n, k = map(int,input().split())
a = list(map(int,input().split()))
s = [True] * n #Liste, um festzustellen, ob Sie besuchen
c = [1] #Liste, um die Reihenfolge der Besuche aufzuzeichnen
now = 0 #Aktueller Standort
while s[now]:
s[now] = False #Notieren Sie die Punkte, die Sie besucht haben
now = a[now] - 1
c.append(now+1)
start_cycle = c.index(c[-1]) #Zeigen Sie, um in die Schleife einzutreten
loop = c[start_cycle:-1] #Liste der Schleifen
cycle = len(loop)
if k < start_cycle: #K kann die Schleife nicht erreichen
print(c[k])
else:
k -= start_cycle
k %= cycle
print(loop[k])
Wenn ich ruhig war, war ich enttäuscht, weil ich es während des Wettbewerbs lösen konnte. wir sehen uns.
Recommended Posts