Collatz pseudo-sequences (2) P69781


Statement
 

pdf   zip

Let us define sequences similar to those of Collatz with two parameters xx and yy. Given a number nn, the algorithm to get the next number is:

  • if nn is even, we move to n/2+xn/2 + x;

  • otherwise, we move to 3n+y3n + y.

The standard Collatz sequence corresponds to x=0x = 0 and y=1y = 1.

Given xx, yy and a starting number nn, compute the length of the cycle reached by applying the above algorithm. For example, if x=1x = 1, y=5y = 5 and n=8n = 8, then the defined sequence is 8, 5, 20, 11, 38, 20, 11, 38, … so the cycle has length 3.

Since numbers can become very large, and we have no mathematical guarantee that we will reach a cycle, we will stop if at some point the sequence reaches a number greater than 10810^8.

Input

Input consists of several cases, each with three natural numbers xx, yy and nn. Assume that both xx and yy do not exceed 1000, that yy is odd (for the sequence to have some interest), and that the initial nn is not larger than 10810^8.

Output

For every case, print the length of the cycle, or the first number that strictly exceeds 10810^8.

Observation

Take into account that the sequences usually reach fast a “short” cycle.

Public test cases
  • Input

    1 5 8
    0 5 0
    10 11 3
    7 3 6
    1 999 100000000
    433 805 215476
    0 1 33333333
    

    Output

    3
    1
    1
    35
    150001002
    490
    3
    
  • Information
    Author
    Salvador Roura
    Language
    English
    Translator
    Salvador Roura
    Original language
    Catalan
    Other languages
    Catalan
    Official solutions
    C++ Python
    User solutions
    C++ Python