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. [:)]


 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:


28×1


14×2


7×4


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:


36×1  (2 pulsaciones)


18×2  (2 pulsaciones)


12×3  (2 pulsaciones)


9×4    (2 pulsaciones)


6×6    (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!!

Un comentario en “Respuesta al reto de "Programancia 101"”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *