Problem #48
✰ - click to bookmark
★ - in your bookmarks
Tags:
arithmetic
classical
c-1
c-0
simple
Toto je jeden z najzáhadnejších matematických problémov minulého storočia - pretože problémový výrok je mimoriadne jednoduchý a pretože dôkaz je stále neznámy, avšak tento problém ponúka dobré programátorské cvičenie pre začiatočníkov.
Predpokladajme, že vyberieme nejaké počiatočné číslo X a potom vytvoríme sekvenciu hodnôt podľa pravidiel:
if X je párne (t.j. X modulo 2 = 0) potom
buduceX = X / 2
else
buduceX = 3 * X + 1
T.j ak X je nepárne, sekvencia rastie - a ak je párne, sekvencia klesá. Napríklad, pre X = 15 dostaneme sekvenciu:
15 46 23 70 35 106 53 160 80 40 20 10 5 16 8 4 2 1
Keď sekvencia dosiahne 1, dostane sa do cyklu 1 4 2 1 4 2 1....
Háčik spočíva v tom, že akékoľvek počiatočné číslo X skôr či neskôr vyústi v spomínanú 1 - avšak aj keď táto
Collatzova domienka bola predstavená v roku 1937, až do dnes nikto nenašiel dôkaz, že je tomu skutočne tak pre
akékoľvek X alebo, že existuje nejaký proti príklad (t.j číslo pre ktoré sekvencia nekončí 1 - buď nejakým väčším
cyklom alebo nekonečným rastom).
Vašou úlohou je pre dané čísla, vypočítať koľko krokov je potrebných na dosiahnutie 1.
Vstupné dáta obsahuje počet príkladov v prvom riadku.
Druhý riadok obsahuje samotné príklady t.j hodnoty, pre ktoré by mali byť vykonané výpočty.
Odpoveď by mala obsahovať rovnaký počet výsledkov, pričom každý z nich je počet krokov potrebný pre
dosiahnutie Collatzovej sekvencie na hodnotu 1.
Napríklad:
vstupné dáta:
3
2 15 97
odpoveď:
1 17 118