Problem #48
✰ - click to bookmark
★ - in your bookmarks
Tags:
arithmetic
classical
c-1
c-0
simple
This is one of the most mysterious math problems of the last century - both because its statement is extremely simple - and because the proof is still unknown. However it offers good programming exercise for beginners.
Suppose we select some initial number X and then build the sequence of values by the following rules:
if X is even (i.e. X modulo 2 = 0) then
Xnext = X / 2
else
Xnext = 3 * X + 1
I.e. if X is odd, sequence grows - and if it is even, sequence decreases. For example, with X = 15 we have sequence:
15 46 23 70 35 106 53 160 80 40 20 10 5 16 8 4 2 1
After the sequence reaches 1 it enters the loop 1 4 2 1 4 2 1....
The intrigue is in the fact that any starting number X gives the sequence which sooner or later reaches 1 - however
though this Collatz Conjecture was expressed in 1937, up to now no one could find a proof that it is really so for
any X or could not find a counterexample (i.e. number for which sequence did not end with 1 - either entering some
bigger loop or growing infinitely).
Your task is for given numbers to calculate how many steps are necessary to come to 1.
Input data contains number of test-cases in the first line.
Second line contains the test-cases - i.e. the values for which calculations should be performed.
Answer should contain the same amount of results, each of them being the count of steps for getting Collatz
Sequence to 1.
For example:
input data:
3
2 15 97
answer:
1 17 118