Bestellung im Laden Die Aufgabe der Olympiade ist es, Code in Java/Python zu schreiben
Danil Dan
Bestellung im Laden Die Aufgabe der Olympiade ist es, Code in Java/Python zu schreiben
Bestellung im Laden Zeitlimit: 0,5 Sekunden Igor beschloss, sich für das gesamte neue Schuljahr mit Stiften einzudecken, und berechnete, dass er M Stifte brauchte. Sein Lieblings-Online-Shop hat eine praktische Funktion: Er kann einer Bestellung sofort ein Paket mit einer beliebigen Anzahl von Stiften von 1 bis N hinzufügen.Es stellte sich heraus, dass zwei Pakete derselben Größe nicht zu einer Bestellung hinzugefügt werden können. Wenn Igor zum Beispiel M=12 Stifte kaufen muss und die maximale Anzahl von Stiften in einer Packung N=10 ist, dann kann Igor der Bestellung eine Packung mit 7 Stiften und eine Packung mit 5 Stiften hinzufügen, aber er kann nicht hinzufügen zwei Packungen mit 6 Stiften. Geben Sie eine Bestellung für M-Stifte auf, indem Sie die Mindestanzahl verschiedener Verpackungen verwenden. Eingabeformat Die erste Zeile der Eingabe enthält die Zahl N — die maximale Größe eines Pakets (1≤N≤109). Die zweite Zeile der Eingabe enthält eine Ganzzahl M — die erforderliche Anzahl von Stiften in der Reihenfolge (1≤M≤109). Ausgabedatenformat Das Programm sollte eine oder mehrere Zahlen von 1 bis N ausgeben — die Größen der ausgewählten Pakete in beliebiger Reihenfolge. Es gibt mehrere mögliche Lösungen, drucken Sie eine davon aus. Wenn es keine Lösung gibt, müssen Sie eine einzelne Zahl 0 drucken. Bitte helfen Sie sehr wenig Zeit
Antworten:
Jewgeni Skameikin
n = int(input()) m = int(input()) if n > m: n = m L = 0 R = n + 2 while R - L > 1: mid = (L + R) // 2 if (mid + n) * (n - mid + 1) // 2 >= m: L = mid else: R = mid if (L + n) * (n - L + 1) // 2 < m: print( 0) else: for i in range(R, n + 1): print(i) s = (R + n) * (n - R + 1) // 2 if m - s > 0: print(m - s )