PROG0014 - Collatz conjecture

no tags 

The Collatz conjecture is a conjecture from number theory. It is based on a sequence of numbers — referred to as the hailstone sequence — that is constructed in the following way: take any integer $n$. If $n$ is even, divide it by 2 to get $n / 2$. If $n$ is odd, multiply it by 3 and add 1 to obtain $3n + 1$. The Collatz conjecture states that no matter what integer $n$ ($n \geq 1$) you start with, you will eventually always reach 1. This conjecture has been first proposed by Lothar Collatz in 1937. Up until now this conjecture has neither been proven nor rejected.

As an example, let's start from the number $n = 12$. The hailstone sequence that results from this number reads as follows:

12, 6, 3, 10, 5, 16, 8, 4, 2, 1

Based on this sequence it is said that the cycle length for $n = 12$ is equal to 10, because the length of the corresponding hailstone sequence (including the last value 1) is equal to 10. If we start from the number $n = 15$, we have a much longer hailstone sequence with cycle length 18:

15, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1

For $n = 27$ the cycle length is as high as 112, climbing up to a maximal value above 9000 before descending to 1:

27, 82, 41, 124, 62, 31, 94, 47, 142, 71, 214, 107, 322, 161, 484, 242, 121, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466, 233, 700, 350, 175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167, 502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479, 1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911, 2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732, 866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1

The figure below illustrates the evolution of the hailstone sequence for $n = 27$.

hagelsteen-reeks
Evolution of hailstone sequence for $n = 27$.

Input

The input contains $t$ test cases ($t \leq 100$). The first line of the input contains the integer $t$. It is followed by $t$ lines that each contain an integer $n$ ($n \geq 1$).

Output

For each test case, print the cycle length for $n$ on a separate line.

Example

Input:

5
1
2
321
1111111111111
111111111111111111111111111111111111111111111111111111111111

Output:

1
2
25
261
1296

Epilogue

What's the use of the Collatz conjecture? The figure below shows a possible use case.

Collatz conjecture

Het vermoeden van Collatz is afkomstig uit de getaltheorie. Het is gebaseerd op een specifieke reeks — een hagelsteen-reeks genoemd — die als volgt geconstrueerd wordt: neem een willekeurig natuurlijk getal $n$. Als $n$ even is, dan wordt het gedeeld door 2. Als $n$ oneven is, dan wordt het vermenigvuldigd met 3 en wordt daar nog 1 bij opgeteld. Het vermoeden van Collatz zegt nu dat voor elk natuurlijk getal $n$ ($n \geq 1$) de corresponderende hagelsteen-reeks altijd eindigt bij 1, als je het beschreven proces maar lang genoeg herhaalt. Dit vermoeden werd voor het eerst geformuleerd door Lothar Collatz in 1937. Tot op heden is het vermoeden nog niet bevestigd of weerlegd.

Stel dat we bijvoorbeeld vertrekken van het getal $n = 12$, dan ziet de corresponderende hagelsteen-reeks er als volgt uit:

12, 6, 3, 10, 5, 16, 8, 4, 2, 1

Men zegt dat de cyclelengte voor $n = 12$ gelijk is aan 10, omdat de lengte van de bijhorende hagelsteen-reeks (inclusief de laatste waarde 1) gelijk is aan 10. Als we echter vertrekken van het getal $n = 15$, dan ontstaat een veel langere reeks met cyclelengte 18:

15, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1

Voor $n = 27$ loopt de cyclelengte op tot 112, waarbij een maximale waarde bereikt wordt die al eens stuk boven de 9.000 ligt:

27, 82, 41, 124, 62, 31, 94, 47, 142, 71, 214, 107, 322, 161, 484, 242, 121, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466, 233, 700, 350, 175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167, 502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479, 1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911, 2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732, 866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1

Onderstaande grafiek illustreert het verloop van de hagelsteen-reeks voor $n = 27$.

hagelsteen-reeks
Verloop van hagelsteen-reeks voor $n = 27$.

Invoer

De invoer bestaan uit $t$ testgevallen ($t \leq 100$). De eerste regel van de invoer bevat het natuurlijk getal $t$. Daarna volgen $t$ regels met op elke regel een natuurlijk getal $n$ ($n \geq 1$).

Uitvoer

Schrijf voor elk testgeval $n$ de corresponderende cyclelengte uit.

Voorbeeld

Invoer:

5
1
2
321
1111111111111
111111111111111111111111111111111111111111111111111111111111

Uitvoer:

1
2
25
261
1296

Epiloog

Waarvoor is het vermoeden van Collatz nuttig? Onderstaande figuur toont een mogelijke toepassing.

Collatz conjecture


Added by:Peter Dawyndt
Date:2011-07-13
Time limit:10s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:PY_NBC
Resource:None