Ak nevieš programovať, nezúfaj! Môžeš sa to naučiť a ešte za to získať body, ktoré sa ti budú počítať namiesto tejto úlohy.
Stačí, že pôjdeš na stránku Programátorskej Liahne (liahen.ksp.sk). Keď budeš riešiť sadu loops_cpp, bodmi, ktoré získaš si môžeš nahradiť riešenie tejto úlohy. Stačí ak na spodku tejto stránky odovzdáš pdf-ko s prezývkou, ktorú používaš na Liahni.
Ak máte akékoľvek otázky ohľadom tejto úlohy, napíšte Denisovi na [email protected]
Kika sa rozhodla, že napečie palacinky pre celú rodinu. Spravila teda cesto, zapla sporák a zohriala na ňom panvicu. Na neuveriteľne dlhý stôl naukladala neuveriteľne veľa tanierov, pekne vedľa seba ako sa na skúsenu gazdinú patrí, a začala piecť palacinky. Keď bola prvá palacinka upečená, Kika zavolala k svojmu neuveriteľne dlhému stolu celú rodinu a položila palacinku na prvý tanier na stole. Vždy, keď bola ďalšia palacinka hotová, Kika ju položila na prvý tanier na stole.
Keďže Kika dáva palacinky len na prvý tanier, jej rodina musela vymyslieť, ako sa rozdelia. Predsa len, je fajn byť prvý pri stole, ale čo ostatní? Jej rodina si teda vymyslela zaujímavé stravovacie návyky. Ak má niekto na svojom tanieri tri palacinky, tak jednu posunie doprava a ostatné dve zje. Nemôže predsa posunúť ďalej viac palaciniek ako by sám zjedol. Keď Kika dopečie poslednú palacinku, zaujíma ju, koľko palaciniek zostalo každému z rodiny na tanieri.
Úloha
Vašou úlohou je napísať program, ktorý vypíše koľko palaciniek zostalo každému z rodiny na tanieri po tom, ako Kika dopečie poslednú palacinku. Pri stole sa nachádza \(k\) členov rodiny a Kika upečie \(n\) palaciniek. Rodina sa správa podľa týchto stravovacích návykov:
- Kika vždy pokladá čerstvo upečenú palacinku na prvý tanier na stole.
- Ak má nejaký člen rodiny na tanieri 3 palacinky, tak dve zje a jednu posunie nasledujúcemu členovi rodiny. Kika, ako správna gazdiná, vie odhadnúť, koľko cesta prichystať. Preto posledný človek nikdy nebude musieť posúvať palacinku ďalej.
- Ak má akýkoľvek člen rodiny menej ako 3 palacinky, tak nerobí nič.
Formát vstupu
Na prvom riadku vstupu sú dve celé čísla \(n\) (\(1 \leq n \leq 10^{15}\)) a \(k\) (\(1 \leq k \leq 40\)). Číslo \(n\) reprezentuje počet palaciniek, ktoré Kika napečie, a \(k\) reprezentuje počet osôb pri stole.
Pri riešení v jazyku C++
, Pascal
, Java
, a podobných, si dávajte pozor na maximálne číslo, ktoré sú schopné celočíselné premenné uložiť. Počet palacieniek môže v posledných troch sadách tieto limity prekročiť. Odporúčame použiť \(64\)-bitové premenné. V jazyku C++
preto namiesto typu int
použite typ long long int
.
Formát výstupu
Na výstup vypíšte riadok, na ktorom bude \(k\) čísiel, pričom \(k_i\) vyjadruje počet palaciniek, ktoré zostali človeku \(i\) na tanieri po tom, ako Kika dopiekla poslednú palacinku. Tieto čísla vypisujte na výstup bez medzier a za posledným číslom vypíšte znak konca riadku.
Hodnotenie
Vaše riešenie bude testované na 5 rôznych sadách vstupov. Rôzne sady sa budú líšiť špeciálnymi obmedzeniami:
Číslo sady | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
maximálne \(n\) | \(100\) | \(10\,000\) | \(10^{12}\) | \(10^{15}\) | \(10^{15}\) |
maximálne \(k\) | \(10\) | \(15\) | \(30\) | \(35\) | \(40\) |
Príklady
Input:
7 4
Output:
1200
Input:
12 5
Output:
01100
Odovzdávanie
Na odovzdávanie sa musíš prihlásiť
Otázky a diskusia
Po skončení kola budete mať príležitosť na diskutovanie o riešeniach v diskusii pod vzorovým riešením.