Desafío
Escriba una función o programa que tome un número decimal positivo, llámelo A y genere dos números positivos, B y C , de modo que:
- A == B bitxor C
- B y C no deben contener ninguno de los dígitos 0, 3 o 7 en su representación decimal.
Ejemplos
>>> decompose(3)
1, 2
>>> decompose(7)
1, 6
>>> decompose(718)
121, 695
>>> decompose(99997)
2, 99999
>>> decompose(4294967296)
4294968218, 922
>>> decompose(5296080632396965608312971217160142474083606142654386510789497504098664630388377556711796340247136376)
6291484486961499292662848846261496489294168969458648464915998254691295448225881546425551225669515922,
1191982455588299219648819556299554251659915414942295896926425126251962564256469862862114191986258666
Como la descomposición no es única, su función / programa no necesita generar exactamente los mismos resultados que estos ejemplos proporcionados.
Reglas muy detalladas
Las presentaciones deben ser en forma de una función o programa completo .
importdeclaraciones no cuentan para el marcador final.Puede suponer que la entrada A siempre contiene al menos un dígito de 0, 3 o 7.
Puede suponer que siempre existe una descomposición.
Puede usar BigInt si forman parte de las bibliotecas estándar del idioma o si se pueden instalar a través del administrador de paquetes de jure del idioma .
La función debe ser rápida. No debería llevar más de 20 segundos ejecutarlo en una computadora razonablemente moderna cuando se ingresa un número de 100 dígitos, y no más de 2 segundos cuando se ingresa un número de 10 dígitos.
La función / programa debe admitir la entrada de al menos 100 dígitos .
- Si la función / programa solo admite números enteros de hasta N <100 dígitos, habrá una penalización de + 10 × (100 / N - 1) bytes a la puntuación final. Esto es para alentar a los golfistas a admitir una gama más amplia de números, incluso si la importación puede ser detallada.
No hay restricción en la presentación de entradas / salidas siempre que estén claramente en representación decimal.
- La función puede introducir y generar cadenas / BigInts si los tipos de enteros integrados no son suficientes.
- La entrada puede provenir del parámetro de función, argumento de línea de comando o STDIN.
- La función puede devolver el resultado o simplemente imprimir el resultado directamente en STDOUT.
- Sin embargo, el desbordamiento firmado en las entradas / salidas no está permitido.
- No se toleran respuestas aproximadas, las entradas / salidas deben ser exactas.
Puntuación
Este es un código de golf . La solución más corta en bytes gana.
Hay una penalización si el programa solo puede admitir números de menos de 100 dígitos:
- Enteros de 64 bits (19 dígitos) = +42 bytes
- Enteros de 63 bits (18 dígitos) = +45 bytes
- Enteros de 53 bits (15 dígitos) = +56 bytes
- Enteros de 31/32 bits (9 dígitos) = +101 bytes