ist eine Zielposition, bestimmen Sie die Zahl, die nach der Sortierung der Nummern 1 bis n zu finden ist. Die Sortierreihenfolge lautet: Erstens nach Rest
(0, 1, 2, ..., M-1) und innerhalb jeder Restgruppe in aufsteigender
-reihenfolge der ursprünglichen Zahl. 5,
9, 2, 6, 10, 3, 7]. 2, 6, 10 < /li>
Zahlen, die bei der Division durch 4 eine verbleibende 3: 3, 7 < /li>
Die Zahl an der 8. Position 10. Ich brauche eine Lösung, die für große Werte von n (bis zu 10^16) und M (bis zu 10^6) in Python funktioniert, während ich eine Zeitlimit von 8 Sekunden respektiere. Die Sortierkriterien sind: zuerst nach dem Rest, wenn er durch m geteilt ist, und dann in aufsteigender Reihenfolge innerhalb jeder Restgruppe. < /P>
Meine aktuelle Lösung: < /p>
def specialEvent(n, m, t):
counts = [0] * m
for i in range(1, m + 1):
counts[i % m] = (n - i) // m + 1
group_index = 0
while t > counts[group_index]:
t -= counts[group_index]
group_index += 1
result = group_index + (t - 1) * m
return result
< /code>
schlägt in einem Testfall fehl: < /p>
Code: Select all
Input:
768767
123
6250
Output:
768750