Encontrando al Padre


Submit solution

Points: 100 (partial)
Time limit: 1.0s
Memory limit: 64M

Author:
Problem type
Allowed languages
C, C++, Java, Pascal

Los números tienen ADN como los humanos. El ADN de un número es su representación binaria. Recientemente surgió una nueva teoría: el padre de un número dado de 32 bits es el menor número de 32 bits mayor que tiene la misma cantidad de unos en su ADN.

Dado un entero positivo N, encuentre el menor entero mayor que N que de acuerdo con esta teoría podría ser su padre.

Entrada

La entrada contendrá varias líneas, pero no más de 75. En cada línea, N estará entre 1 y 10^9, inclusive.

Salida

Para cada línea en la entrada, debe imprimir una línea con la representación decimal del padre de N (el número dado).

Ejemplo de Entrada

12
88
1024

Ejemplo de Salida

17
97
2048

Comments


  • 2
    Mrtll  commented on Oct. 27, 2024, 3:25 a.m.

    Lo que sigue te puede economizar tiempo, no es la solución al ejercicio.

    Para leer los numero y procesarlos sugiero:

    /* Para c++ */
    int main()
    {
        int numero;
    
        while (cin >> numero)
        {
            /* code */
        }
    
        return 0;
    }

    /* Para c */
    int main()
    {
        int numero;
    
        while (scanf("%d", &numero) != EOF)
        {
            /* code */
        }
    
        return 0;
    }

    Para los simples mortales como yo que nunca habían manipulado bits echarle un ojo a std::bitset y para que veas a los dioses cuando le des solución al problema mira el primer código de las mejores soluciones.