Zadanie
Táto úloha je špeciálna. Nemusíš odovzdávať nič, vždy keď splníš level automaticky dostaneš body. Ak máte akékoľvek otázky ohľadom tejto úlohy, napíšte Dávidovi na [email protected]
Táto úloha má presne to isté zadanie ako úloha v predošlom kole – Podzemnica olejná 1, má však nové podúlohy B1 až B4.
Hru nájdete na stránke vlacik.ksp.sk.
Podúloha B1
Zdvojnásob číslo vo vagóne A.
Spravíme to pomocou dvoch okruhov. V prvom presunieme číslo z A do B, a v druhom zase naspäť z B do A, ale pripočítanie do A spravíme dva krát.
Podúloha B2
Vydel číslo vo vozni A číslom vo vozni B a výsledok ulož do vozňa C. Výsledok zaokrúhli nadol.
Táto úloha sa už dala riešiť rôzne. Základ riešenia je jeden cyklus v ktorom od A odpočítavame B a vždy keď to spravíme, pripočítame jedna ku C. V C-čku teda bude uložené to, koľko krát sa nachádza B-čko v A-čku. Až na malý detajl, že odčítanie funguje aj keď prvé číslo je menšie s tým že nám necháva nulu. Teda toto riešenie nám funguje iba bez zaokrúhlovania, teda keď sa nám podarí deliť bez zvyšku. V odtatných prípadoch je výsledok o jedna viac ako by mal. Namiesto toho aby sme si kontrolovali či je prvé číslo menšie, spravíme malý trik.
Pred cyklom ku A pripočítame 1, čím dosiahneme to, že výsledok bude už v každom prípade o 1 viac ako má (teda aj so zvyškom aj bez). Potom už iba spravíme jedno odčítanie B od A, čím zmenšíme výsledok o jedna.
Podúloha B3
Nájdi zvyšok po delení čísla vo vozni A číslom vo vozni B a ulož ho do vozňa C
Podobne ako v predošlej úlohe, budeme od A odčítavať B. Teraz ale musíme kontrolovať či nie je náhodou A menšie ako B. V takom prípade je to zvyšok ktorý hladáme. V cykle teda najprv odčítame A od B a uložíme si výsledok do C, čím ich porovnáme a rozhodneme sa – ak to nie je nula, A je menšie a teda je to náš zvyšok, ak je to nula, pokračujeme v odčítavaní.
Špeciálny prípad nastane ak delíme bez zvyšku, vtedy skončíme s nulou v A a vyhodí nás už výhybka ktorou vchádzame do cyklu.
Podúloha B4
Daj do vozňa C najvačšieho spoločného deliteľa vozňov A a B
Opäť máme viacero možností, jedna je priamo hľadať číslo C a skúšať deliteľnosť. My si ukážeme šikovnejšie riešenie pomocou euklidovho algoritmu
Máme opäť jeden cykus, v tom si A-čko predelíme B-čkom a uložíme zvyšok. Ak je to nula, tak B je náš spoločný delitel. V opačnom prípade iba čísla A a B vymeníme, aby bolo A-čko väčšie ako B, a opakujeme.
Diskusia
Tu môžte voľne diskutovať o riešení, deliť sa o svoje kusy kódu a podobne.
Pre pridávanie komentárov sa musíš prihlásiť.