Collatz Sequence

Problem #48

Tags: arithmetic classical c-1 c-0 simple

Who solved this?

Back to English version

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
You need to login to get test data and submit solution.