Pseudo-seqüències de Collatz (2) P69781


Statement
 

pdf   zip

Considereu dos paràmetres xx i yy. Donat un nombre nn, definim una seqüència on l’algorisme per obtenir el nombre següent és:

  • si nn és parell, passem a n/2+xn/2 + x;

  • altrament, passem a 3n+y3n + y.

Donats xx, yy i un nombre inicial nn, calculeu la longitud del cicle al qual s’arriba aplicant l’algorisme anterior. Per exemple, si x=1x = 1, y=5y = 5 i n=8n = 8, llavors la seqüència definida és 8, 5, 20, 11, 38, 20, 11, 38, … així que el cicle té longitud 3.

Com que els números es poden fer molt grossos, i a més no tenim cap garantia matemàtica de que sempre s’arribi a un cicle, cal parar si en algun moment la seqüència arriba a un nombre més gran que 10810^8.

Entrada

L’entrada consisteix en diversos casos, cadascun amb tres naturals xx, yy i nn. Suposeu que tant xx com yy no superen 1000, que yy és senar (perquè la seqüència tingui alguna gràcia), i que la nn inicial no és més gran que 10810^8.

Sortida

Per a cada cas, escriviu la longitud del cicle al qual s’arriba, o bé el primer nombre que supera 10810^8 estrictament.

Observació

Tingueu en compte que les seqüències solen arribar ràpidament a cicles “curts”.

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
    Catalan
    Other languages
    English
    Official solutions
    C++ Python
    User solutions
    C++ Python