Función para engrosar números X50141


Statement
 

pdf   zip   main.cc

En este problema, dado cualquier número natural xx con nn dígitos x1xnx_1 \dots x_n, diremos que y=y1yny = y_1 \dots y_n es el resultado de engrosar xx si, para todo ii entre 1 y nn, yi=max{x1,,xi}y_i = \max\{x_1, \dots, x_i\}. Por ejemplo, si engrosamos 7 obtenemos 7, si engrosamos 32064781 obtenemos 33366788, y si engrosamos 9000000 obtenemos 9999999.

Escribid una función

    int engrosa(int x);

que devuelva el resultado de engrosar @x@.

No podéis utilizar vectores en vuestro código. Os sugerimos que penseis una implementación recursiva. Si lo consideráis conveniente, podéis implementar y usar procedimientos auxiliares.

Vuestro código debe seguir las normas de estilo y contener los comentarios que consideréis oportunos.

Precondición

Se cumple 0<0 < @x@ <109< 10^9.

Observación

Sólo tenéis que enviar el procedimiento requerido; el programa principal será ignorado.

Public test cases
  • Input/Output

    engrosa(7) → 7
    engrosa(32064781) → 33366788
    engrosa(9000000) → 9999999
  • Information
    Author
    Jordi Cortadella
    Language
    Spanish
    Translator
    Maria Serna
    Original language
    Catalan
    Other languages
    Catalan English
    Official solutions
    Unknown.
    User solutions
    C++