Mistrzostwa Polski Szkół Średnich w Programowaniu Zespołowym 2024

2020-2022 2023 Regulations Schedule RODO info Ranking

Problem description


Sumy Fibonacciego
(sumy-fibonacciego)
Memory limit: 64 MB
Time limit: 1.00 s

Ola (znana z piątego sparingu w dywizji trudniejszej) powraca! Ponownie zainteresowana jest ciągami Fibonacciego. Tym razem jednak chodzi jej o liczby (a nie słowa) Fibonacciego. Chciałaby przedstawić swoją ulubioną liczbę N w postaci sumy dokładnie K (niekoniecznie różnych) liczb Fibonacciego. Pomóż jej!

Napisz program, który: wczyta N oraz K, wyznaczy pewne przedstawienie liczby N w postaci sumy dokładnie K liczb Fibonacciego i wypisze wynik na standardowe wyjście.

Wejście

W pierwszym (jedynym) wierszu wejścia znajdują się dwie liczby naturalne N oraz K, oddzielone pojedynczym odstępem i określające kolejno: ulubioną liczbę Oli oraz liczbę składników, na które ma ona być rozbita.

Wyjście

W pierwszym (i jedynym) wierszu wyjścia należy wypisać ciąg K liczb ciągu Fibonacciego pooddzielanych pojedynczymi odstępami, których suma jest równa N. Jeśli taki ciąg nie istnieje – zamiast tego należy wypisać tylko jedno słowo NIE.

Liczby ciągu mogą być wypisane w dowolnej kolejności. Jeśli istnieje wiele możliwych rozwiązań – należy wypisać dowolne z nich.

Uwaga

Ciąg Fibonacciego w tym zadaniu jest definiowany następująco: F0 = F1 = 1, Fn = Fn − 1 + Fn − 2 (dla n ≥ 2).

Ograniczenia

1 ≤ N ≤ 1018, 1 ≤ K ≤ 100 000.

Przykład

Input Output Explanation
10 3
2 3 5

Rozwiązania w tym przypadku to rozbicia: 10 = 8 + 1 + 1 lub 10 = 5 + 3 + 2.