Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Predstavme si, že máme kalkulačku, ktorá má na začiatku na displeji číslo 1 a má práve dve tlačítka: [-1], ktoré zníži hodnotu na displeji o 1 ale iba ak hodnota na displeji ja väčšia ako 1 a [*3], ktoré hodnotu na displeji vynásobí tromi.
Úloha: Určite ako sa dá nejaké prirodzené číslo n získať stlačením tlačítiek čo najmenej krát.
Riešenie (moje):
if (n = 1) terminate else while n <> 1 do if n mod 3 = 0 print "[*3]" n := n / 3 else printf "[-1]" n := n + 1
Pseudokód vypíše postupnosť odzadu. Hľadám postupnosť, pri ktorej sa snažím čo najmenej odčítavať a čo najviac násobiť. Preto pričítam 1, kým nedostanem číslo deliteľné číslom 3 a potom ho vydelím atď.
Mám pocit, že tento algoritmus nájde najkratšiu postupnosť ale neviem to dokázať. Vedel by mi niekto pomôcť? Ďakujem.
Offline
↑ Stýv:
Ak mám číslo, ktoré nie je deliteľné tromi a pričítam k nemu 3k jednotiek, tak stále nebude deliteľné tromi... neviem teda kam tou otázkou smeruješ. Prosím, preformuluj svoj hint. Ďakujem.
Offline
↑ Stýv:
No tak menej je vydeliť tromi a pričítať k jednotiek. Asi som ale vôl, lebo aj tak z toho neviem výjsť... a pritom to je z prijímačkových knižiek na MFF. Tam bola táto istá úloha, len ja som si ju zo zaujímavosti zovšeobecnil.
Offline
↑ Stýv:
No veď samozrejme.
...
:D
Dík.
Offline