Blog de Miguel Llopis

Respuesta al reto de "Programancia 101"

Hola amig@s,

El lunes montado en un avión rumbo a París para hacer una entrevista de MS Internship me fijé en los botones que en cada asiento tenemos para encender una bombillita o llamar a la azafata y me acordé del reto que nos propuso Ricardo en su blog... Como no tenía nada mejor que hacer ahí arriba me dediqué a resolverlo. Smile

 La verdad, después de mucho reflexionarlo, es que el problema no necesita ningún cálculo de tipo complejo (o eso creo).

La cosa se trata de saber qué numeros menores o iguales que el 64 tienen un número impar de divisores. Dichas bombillas son las que permanecerán encendidas al final, ya que si partimos de que están apagadas, realizaremos un número impar de pulsaciones, con lo que acabarán encendidas.

Cuales son dichos números? Bien, si nos fijamos, los divisores de un número siempre se asocian por parejas.

Por ejemplo, el 28 tiene como divisores:

28x1

14x2

7x4

De modo que tiene un número par de divisores.

Qué números son aquellos que tienen un número impar de divisores? Los CUADRADOS PERFECTOS. Es decir, los números cuya raíz cuadrada es entera (siendo dicha raíz el divisor en cuestión).

Por ejemplo, el 36:

36x1  (2 pulsaciones)

18x2  (2 pulsaciones)

12x3  (2 pulsaciones)

9x4    (2 pulsaciones)

6x6    (1 pulsación)

Para el 36, pulsaremos 9 veces el interruptor en total. Por tanto, permanecerá encendida al final.

Resumiendo, sin necesidad de cálculos de ningún tipo (salvo un cálculo de raíces cuadradas, o en su caso, un bucle que calcule los cuadrados perfectos menores o iguales q 64... es decir, 8 productos, 8 if's y poco más) tendremos resuelto el problema.

Bombillas encendidas: 1, 4, 9, 16, 25, 36, 49 y 64.

Un saludo!!

Posted: 21/3/2007 20:04 por Miguel LLopis | con 2 comment(s)
Archivado en:
Comparte este post:

Comentarios

el mejor ha opinado:

jilipollas

# October 1, 2007 5:27 PM