Skip to content

Bits a uno

by en 03/03/2014

¡Aquí estamos, una semana más!

Tras el acertijo de la semana pasada en ¡Acepta el reto!, volvemos otra vez al juez de la Universidad de Valladolid. ¡Pero no os olvidéis del otro! En portada os propone un nuevo problema de la semana que, aunque no es válido para acertijo, permite practicar algunos conceptos importantes de programación.

Pero basta de charla. En otros acertijos hemos hablado ya de los números binarios, que seguro que a estas alturas ya tenéis más que dominados. Si no es así, podéis refrescarlos, por ejemplo, con el acertijo de Paridad.

La pregunta que os hacemos hoy es muy fácil de entender. ¿Cuántos unos se necesitan para escribir en binario todos los números entre 0 y 8? ¿Y entre 9 y 26? ¿Y entre 99 y 321?

Si dáis con la solución, ¡contádnosla en los comentarios! Y si la programáis y queréis probarla, podéis hacerlo aquí. ¡Ah! Y ¡ni se os ocurra contarlos uno a uno! Si os fijáis en el problema de la Universidad de Valladolid, nos pueden preguntar hasta 2.000.000.000 …

¡Hasta el domingo!

Anuncios
2 comentarios
  1. jserra permalink

    #include

    using namespace std;

    int Contadornumero=0;
    int numeroPrimer=0;
    int numeroSegon=0;
    int casos=0;

    void CalculNum(int numero)
    {
    if(numero==1) Contadornumero++;
    else if(numero%2==1)
    {
    Contadornumero++;
    CalculNum(numero/2);
    }
    else CalculNum(numero/2);
    }

    bool PreguntaNumeros()
    {
    cin >> numeroPrimer;
    cin >> numeroSegon;

    if(numeroPrimer==0 && numeroSegon==0) return false;

    for(int i=numeroPrimer; i<=numeroSegon; i++)
    {
    CalculNum(i);
    }

    casos++;
    cout << "Case " << casos << ": " << Contadornumero << endl;
    Contadornumero=0;
    return true;
    }

    int main(int argc, char **argv)
    {

    while(PreguntaNumeros())
    ;

    return 0;
    };

  2. Gualterio permalink

    Hola!

    Qué acertijo tan chulo 🙂
    Diría que la solución de jserra no valdría para el juez de la Universidad de Valladolid, por ser demasiado lenta.

    Mi apuesta:

    – Entre 0 y 8: 13
    – Entre 9 y 26: 47
    – Entre 99 y 321: 973

    Y ahora una de bonus: entre 0 y 2.000.000: 20.769.991.

    Entre 0 y 2.000.000.000 se lo dejo a David, a ver si se anima y descansa un poco de estudiar para los exámenes (¿no? :-p)

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: