Desafío 2012-06 El problema de Hamming (hay premio)

Esta es una variante del problema de Haming, que el mismo Dijkstra aborda en uno de sus escritos.

La secuencia de Hamming

Tomemos 3 números primos p1, p2 y p3. Definiremos la secuencia de Haming H(p1,p2,p3) como un conjunto que contiene, en orden incremental, todos los números naturales cuyos únicos divisores primos son p1,p2 y p3.

Por ejemplo H(2, 3, 5) = 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 27, …

Definiremos el número Hi(p1,p2,p3), o número de Hamming sub i, con i = 1,2,… al i-ésimo número de la secuencia de Haming H(p1,p2,p3).

Así que H5(2, 3, 5)=6 y H9(2,3,5)=12

El problema consiste en escribir un programa que reciba 4 números: p1 p2 p3 i, y retorne un único entero correspondiente a Hi(p1,p2,p3). Todos los números serán menores que 10ˆ18.

Ejemplo de entrada:

# hamming 7 13 19 100

Salida esperada:

# 26590291

El programa debe correr en menos de 1.000 milisegundos y consumir la menor cantidad de memoria posible.

Ganará el programa más rápido. Da lo mismo el lenguaje de programación. Lo ideal es que envíen instrucciones de compilación.

El premio:** 1 Gift Card de Amazon de us$ 25**. Sólo habrá premio para el primer lugar.

Nota: La respuesta y premación del desafío de mayo viene en el próximo post.

Nota 2: no todos los desafíos tendrán premio.

Eduardo Díaz Cortés
Eduardo Díaz Cortés
Autor

Ingeniero, autor, emprendedor y ejecutivo chileno. Apasionado programador.

comments powered by Disqus
Siguiente
Anterior

¿Te gustó?

puedes apoyarme con un café.