Zadanie

Po skonkretizovaní sa dvere otvorili a my sme vstúpili dnu. Žiaľ, neviem slovami opísať kráľovstvo Abstrakcie. Bolo veľké, asi, a celé akoby dokrkvané. To nehovorím o ošúchaných stenách, ale o zakrivenom časopriestore. Počet rozmerov sa nedal vyjadriť číslom, ale iba písmenkom. Pred očami nám tancovali obory hodnôt rôznych funkcií a multidimenzionálne dvanásťsteny. Vydali sme sa pokrútenou cestičkou a snažili sme sa vnímať toho čo najmenej, aby nám nevybuchli mozgy. Žiaľ, Abstrakcia začala pôsobiť aj na nás. Keď Krutitruľo vytiahol krabičky džúsu, zhrozene zakrútil ušami. Počet krabičiek sa stal arbitrárnym, a aby sme neumreli od smädu, museli sme ho rýchlo skonkretizovať na niečo rozumné. Konkretizovanie je však ošemetná záležitosť aj s potrebným vybavením, keďže nikdy neviete, aká podmienka alebo pravidlo na vás vyskočí.

Krutitruľo mal nejaké prirodzené číslo \(a\). Nepáčilo sa mu, tak v ňom poprehadzoval cifry, čím vzniklo číslo \(b\). Rozdiel \(a - b = 111\ldots1\) pozostáva iba z cifier \(1\). Koľko najmenej jednotiek môže číslo \(a\) obsahovať?

Na začiatok, by som zdôraznil, že k správnemu výsledku sa dá dostať veľa spôsobmi. V tomto vzorovom riešení popíšem jednu z podľa môjho názoru intuitívnych ciest na to, ako sa vieme k výsledku dopracovať.

Ako vo väčšine príkladov, tak aj tu sa oplatí začať skúšaním. Po vyskúšaní pár dvojíc \(a, b\) zistíme, že nie je ľahké ich zostrojiť tak, aby obsahovali rovnaké cifry a ich rozdiel pozostával iba z jednotiek. Poďme sa preto pozrieť na spôsob ako vznikajú jednotky pri odčítavaní. Najjednoduchší spôsob ako vznikajú je, keď cifra v čísle \(a\) je o jeden väčšia ako cifra v čísle \(b\). Druhý spôsob je, keď cifra v čísle \(a\) je \(0\) a cifra v čísle \(b\) je \(9\). Tento prípad je špeciálny, lebo pri odčítavaní pod seba sa nám prenáša zvyšok \(1\). To znamená, že tam bude dvojica čísel, ktorých rozdiel je \(2\) namiesto štandardných \(1\). Môže sa stať aj to, že sa prenáša zvyšok \(1\) aj dvakrát po sebe, ale to je zbytočne komplikované. Keďže to nie je potrebné k vyriešeniu tejto úlohy, tak sa nad tým nebudeme zamýšľať. V praxi by sme sa nad tým zamysleli až potom, čo by nám nestačilo prenášať cez desiatku jedenkrát.

Dobre, našli sme dva spôsoby, podľa ktorých vieme dostať cifru \(1\) v rozdiele. Poďme teda vyskúšať zostrojiť čísla \(a, b\). Vyskúšajme ich zostrojiť tak, aby sme nemuseli ani raz pri ich odčítavaní prenášať zvyšok \(1\). V tom prípade, keď je v čísle \(a\) cifra \(k\), tak v čísle \(b\) bude na tom istom mieste cifra \(k-1\). Tým pádom bude musieť byť cifra \(k-1\) v čísle \(a\), keďže čísla \(a, b\) obsahujú rovnaké cifry. Následne, kvôli tomu, že v čísle \(a\) je cifra \(k-1\), tak v čísle \(b\) bude cifra \(k-2\). Takýmto spôsobom sa dostaneme k tomu, že v čísle \(a\) bude cifra \(0\), v čísle \(b\) by nám vychádzala cifra \(-1\) čo je samozrejme blbosť. Tým pádom bude na danom mieste cifra \(9\) a budeme musieť prenášať zvyšok \(1\).

Zistili sme, že musíme prenášať zvyšok \(1\) cez desiatku, tak tým pádom vieme, že v čísle \(a\) bude cifra \(0\). Pre jednoduchosť si povedzme, že číslo \(a\) sa končí na cifru \(0\) a číslo \(b\) sa tým pádom končí na cifru \(9\). Keďže cifra \(0\) je v čísle \(a\), tak bude aj v čísle \(b\). Vyskúšajme preto pokračovať v zostrojovaní čísel \(a, b\) tak, že \(a\) končí na \(20\), \(b\) končí na \(09\). Týmto sme docielili aj to, že sme preskočili cifru \(1\) – za normálnych okolností by cifra \(1\) v čísle \(a\) bola spárovaná s cifrou \(0\) v čísle b. Keďže našou úlohou je zminimalizovať počet jednotiek, tak sa nám to veľmi hodí. Dobre, poďme pokračovať v zostrojovaní našich čísel. Vieme, že cifra \(2\) je v čísle \(a\), takže preto bude aj v čísle \(b\). Takže dostaneme dvojicu čísel \(a, b\), končiacich na \(320\) a \(209\). Rovnakým spôsobom pridáme cifru \(3\) na miesto tisícok do čísla \(b\), tým pádom cifru \(4\) do čísla \(a\). Pokračovaním v tomto spôsobe dostaneme \(a=987654320, b=876543209\) a zistíme, že naše riešenie je vyhovujúce, vďaka tomu, že posledná pridaná cifra \(9\) do čísla \(a\) sa už nachádza v čísle \(b\).

Poslednou vecou, ktorú je všeobecne veľmi dôležité spomenúť je dôkaz správnosti nášho riešenia. Našli sme čísla \(a, b\) vyhovujúce zadaniu, bez použitia cifry 1. Môžme si byť preto istý, že cifra \(1\) sa v čísle \(a\) nemusí nachádzať. Odpoveďou na otázku v zadaní teda je, že číslo \(a\) môže obsahovať najmenej \(0\) jednotiek.

Poznámka k opravovaniu a riešeniam: riešenia sme najskôr opravili podľa nevhodnej bodovacej schémy – ospravedlňujeme sa vám za to a ďakujeme Uršuli za jej rýchlu reklamáciu poukazujúcu na tento problém. Ku riešeniu na plný počet bodov bolo dostačujúce napísať čísla \(a, b\) vyhovujúce zadaniu a zdôvodniť správnosť riešenia – nejako povedať že počet jednotiek v čísle \(a\) je nula a teda najmenší možný. Vo viacerých riešeniach ste aj popísali postup ako ste sa k tým číslam dostali. V prípade, že by vaše riešenie bolo zlé, tak vďaka tomu, že ste napísali aj o vašich myšlienkach by ste mohli dostať čiastočné body. Obyčajné riešenie teda nemusí byť takto dlhé a v prípade tohto príkladu je stručné riešenie na pár riadkov dostačujúce.

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ť.