Cosas que saber:
Primero, números de la suerte.
Los números de la suerte se generan así:
Toma todos los números naturales:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20...
Luego, elimina cada segundo número.
1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39...
Ahora 3
está a salvo.
Eliminar cada 3er número:
1, 3, 7, 9, 13, 15, 19, 21, 25, 27, 31, 33, 37, 39, 43, 45, 49, 51, 55, 59...
Ahora 7
está a salvo.
Eliminar cada séptimo número.
Continúe y elimine cada n
número, donde n
es el primer número seguro después de una eliminación.
La lista final de números seguros son los números de la suerte.
Los números desafortunados se componen de listas separadas de números, que son [U1, U2, U3... Un]
.
U1
es el primer conjunto de números eliminado de los "candidatos" afortunados, por lo que son:
2, 4, 6, 8, 10, 12, 14, 16, 18, 20...
U2
es el segundo conjunto de números eliminado:
5, 11, 17, 23, 29, 35, 41, 47, 53, 59...
Y así sucesivamente ( U3
es la tercera lista, U4
es la cuarta, etc.)
Reto:
Su tarea es, cuando se le dan dos entradas m
y n
, generar el m
número th en la lista Un
.
Ejemplo de entradas y salidas:
(5, 2) -> 29
(10, 1) -> 20
Especificaciones:
- Su programa debe funcionar
m
hasta1e6
yn
hasta100
.- Estás garantizado que ambos
m
yn
son enteros positivos. - Si tienes curiosidad,
U(1e6, 100)
=5,333,213,163
. (¡Gracias @pacholik!)
- Estás garantizado que ambos
- Su programa debe calcularlo dentro de 1 día en una computadora moderna razonable.
Este es el código de golf , por lo que gana el código más corto en bytes.
PD: Sería bueno que a alguien se le ocurriera una fórmula general para generarlos. Si tienes una fórmula, ¡por favor, ponla en tu respuesta!
(1e6,1e6)
?
n=1
caso? Como esto es especial, para todos los demás casos, el índice basado en 0 del siguiente número de la suerte es n-1
.