Dados dos números N yx, encuentre el número de números de x dígitos cuyo producto de dígitos es N
limits: N(<10^6) and x(<12)
Sample Input:
8 3
Sample Output:
10
code-golf
number-theory
fR0DDY
fuente
fuente
Respuestas:
Python 208 caracteres
fuente
Golfscript
4231Entrada: Espera los números
N
yx
como argumentos de línea de comando (separados por espacio).El programa se puede probar aquí .
fuente
Code took longer than 5 seconds to run, so it was aborted.
con los parámetros invertidos. :)x
va por encima de 4. Por ejemplo, si lo ejecuto en mi máquina con los parámetros3 5
obtengo el resultado después de más de 30 segundos. Así3 8
que supongo que podrían ser horas ...Brachylog (2), 13 bytes, desafío de fechas posteriores al idioma
Pruébalo en línea!
Explicación
Un buen truco de golf utilizado aquí es que, a diferencia de casi todos los metapredicados,
ᶜ
no le importa en absoluto el valor real de.
(que normalmente se usa para construir una salida para los metapredicados); como tal,.
se puede usar como cualquier otra variable (guardar un byte porque aparece implícitamente antes}
). No hay labelisations implícitos en cualquier lugar aquí, así que he tenido que añadir un labelisation explícita usando≜
para darᶜ
algo para contar.fuente
Scala 107:
Versión no depurada y amigable:
Invocación con salida de depuración:
fuente
Python (todavía trabajando en ello) 164
fuente
C # 128
Este método C # devuelve el número de
x
números de dígitos cuyo producto de dígitos esn
. Requiere que los espacios de nombresSystem
ySystem.Linq
se importen en el contexto actual.Versión en línea: http://ideone.com/0krup
fuente
Haskell 117 caracteres
fuente
K, 49
.
fuente
J, 40 bytes
Genera todos los
x
números de dígitos, convierte cada uno en base 10, luego encuentra el producto de cada número y prueba si cada número es igual al lado izquierdo, y luego encuentra la suma de cada booleano.fuente
Jelly , 12 bytes, desafío de fechas posteriores al idioma
Pruébalo en línea!
Toma x como argumento de línea de comando y N en la entrada estándar.
Explicación
La parte difícil es generar la lista de números con x dígitos; el número más bajo es 10 x −1 , el más alto es 10 x −1. El rango aquí se genera al generar primero el par ( x , x −1), luego tomar 10 a la potencia de ambos y luego generar el rango entre ellos. El rango incluye ambos puntos finales por defecto; solo en caso de que N sea 0, necesitamos eliminar el extremo superior del rango (que viene primero porque es un rango "hacia atrás") usando
Ḋ
.fuente