Definición
El teorema de Wolstenholme establece que:
donde a
y b
son enteros positivos y p
es primo, y la gran cosa entre paréntesis es el coeficiente binomial .
Tarea
Para verificar esto, se le dará tres entradas: a
, b
, p
,, donde a
y b
son números enteros positivos y p
es primo.
Calcular:
donde a
y b
son enteros positivos y p
es primo, y el paréntesis es el coeficiente binomial .
Especificaciones
Ya que:
donde y el paréntesis es el coeficiente binomial .
Puedes asumir que 2b <= a
Casos de prueba
a b p output
6 2 5 240360
3 1 13 3697053
7 3 13 37403621741662802118325
code-golf
number-theory
combinatorics
Monja permeable
fuente
fuente
.0
final, para mostrar realmente que no hay restos de la división.[240360]
(matriz singleton) un formato de salida aceptable?Respuestas:
Haskell,
7371 bytesDebido a la recurrencia, esta implementación es muy lenta. Lamentablemente, mi definición del coeficiente binomial tiene la misma longitud que
import Math.Combinatorics.Exact.Binomial
.Una rareza interesante es que Haskell 98 permitió patrones aritméticos que habrían acortado el mismo código a 64 bytes:
fuente
Jalea ,
121110 bytesEspera
a, b
yp
como argumentos de línea de comandos.Pruébalo en línea! o verificar todos los casos de prueba .
Cómo funciona
fuente
Python 2,
1141098571 bytesUna implementación simple. Sugerencias de golf bienvenidas.
Editar: -29 bytes gracias a Leaky Nun y -14 bytes gracias a Dennis.
Una alternativa más simple y de la misma longitud, gracias a Dennis, es
fuente
05AB1E , 11 bytes
Toma entrada como:
Código:
Utiliza la codificación CP-1252 . Pruébalo en línea! .
fuente
R,
5048 bytesTan sencillo como puede ser ... Gracias a @Neil por guardar 2 bytes.
fuente
choose
y usandopryr::f
para definir la función:B=choose;pryr::f((B(a*p,b*p)-B(a,b))/p^3)
.MATL , 13 bytes
Pruébalo en línea!
El último caso de prueba no produce un número entero exacto debido a la precisión numérica. El tipo de datos predeterminado de MATL (
double
) solo puede manejar enteros exactos hasta2^53
.Explicación
fuente
J, 17 bytes
Uso
Por ejemplo:
Esto es solo una implementación directa de la fórmula hasta ahora.
Nota : para la tercera prueba, los números de entrada deben definirse como extendidos (para manejar aritmética grande):
fuente
Brachylog , 52 bytes
Pruébalo en línea!
Acepta entrada
[[a, b], p]
.fuente
Python 3 con SciPy , 72 bytes
Una función anónima que toma datos a través de argumentos y devuelve el resultado
No hay mucho que hacer aquí; Esta es una implementación directa del cálculo deseado.
Pruébelo en Ideone (el resultado se devuelve en notación exponencial para el último caso de prueba)
fuente
Nim ,
85827559 bytesEste es un procedimiento anónimo; para usarlo, se debe pasar como argumento a otro procedimiento, que lo imprime. A continuación se ofrece un programa completo que se puede utilizar para realizar pruebas.
El proceso del
math
módulo de Nimbinom
calcula el coeficiente binomial de sus dos argumentos.fuente
Python 2 , 67 bytes
Pruébalo en línea!
Expresa los coeficientes binomiales aritméticamente usando este método .
fuente
JavaScript (ES6), 70 bytes
Ahorre 1 byte utilizando ES7 (en
/p**3
lugar de/p/p/p
).fuente
APL (Dyalog) , 18 bytes
Pruébalo en línea!
fuente
Pari / GP , 43 bytes
Pruébalo en línea!
fuente