Seqüències malabaristes P96222


Statement
 

pdf   zip

thehtml

Donat un real x, sigui ⌊ x ⌋ com és habitual el màxim enter n tal que nx.

Una seqüència malabarista és una seqüència de naturals que comença amb un a0 ≥ 1, i on cada terme posterior es defineix amb la recurrència següent:

ak+1 =










        


a
1
2
 
k



,
si ak és parell
 
        


a
3
2
 
k



,
si ak és senar.

Com que el terme següent d’1 seria 1, si arribem a 1 acabem la seqüència. Per exemple, {3, 5, 11, 36, 6, 2, 1} i {9, 27, 140, 11, 36, 6, 2, 1} són seqüències malabaristes. Es creu que totes les seqüències malabaristes arriben a 1. Aquesta conjectura s’ha verificat per a a0 ≤ 106.

Donada una seqüència S, els pics són els aiS tals que ai−1 < ai > ai+1. Anàlogament, els clots són els aiS tals que ai−1 > ai < ai+1.

Entrada

L’entrada consisteix en diversos a0 entre 1 i 106. Un 0 marca el final de l’entrada.

Sortida

Per a cada a0 donada, escriviu la longitud de la seqüència malabarista que comença en a0, el nombre de pics, i el nombre de clots. Amb les a0 donades, cap element de cap seqüència serà més gran que 109.

Observacions

  • Recordeu que la funció sqrt() es troba a <cmath>.
  • Valorarem positivament que implementeu i feu servir un procediment
    void malabarista(int a0, int& passos, int& pics, int& clots);
    que donat a0 deixi el resultat demanat als tres paràmetres de sortida.
Public test cases
  • Input

    3
    9
    1
    100
    100001
    0
    

    Output

    7 1 0
    8 2 1
    1 0 0
    9 1 1
    12 3 2
    
  • Information
    Author
    Maria Blesa
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++