Definição
O teorema de Wolstenholme afirma que:
onde a
e b
são inteiros positivos e p
é primo, e os grandes parênteses são o coeficiente binomial .
Tarefa
Para verificar isso, você receberá três entradas: a
, b
, p
, onde a
e b
são inteiros positivos e p
é primo.
Calcular:
onde a
e b
são inteiros positivos e p
é primo, e os parênteses são coeficiente binomial .
Especificações
Desde a:
onde e os parênteses são coeficiente binomial .
Você pode assumir que 2b <= a
Casos de teste
a b p output
6 2 5 240360
3 1 13 3697053
7 3 13 37403621741662802118325
code-golf
number-theory
combinatorics
Freira Furada
fonte
fonte
.0
no final, para realmente mostrar que não há sobras. Da divisão.[240360]
(matriz Singleton) ser um formato de saída aceitável?Respostas:
Haskell,
7371 bytesDevido à recursão, essa implementação é muito lenta. Infelizmente, minha definição do coeficiente binomial tem o mesmo comprimento que
import Math.Combinatorics.Exact.Binomial
.Uma curiosidade interessante é que Haskell 98 permitiu padrões aritméticos que teriam reduzido o mesmo código para 64 bytes:
fonte
Geléia ,
121110 bytesEspera
a, b
ep
como argumentos de linha de comando.Experimente online! ou verifique todos os casos de teste .
Como funciona
fonte
Python 2,
1141098571 bytesUma implementação simples. Sugestões de golfe são bem-vindas.
Editar: -29 bytes graças a Freira Furada e -14 bytes graças a Dennis.
Uma alternativa mais simples e do mesmo comprimento, graças a Dennis, é
fonte
05AB1E , 11 bytes
Toma entrada como:
Código:
Usa a codificação CP-1252 . Experimente online! .
fonte
R,
50bytes 48Tão simples quanto possível ... Agradecemos ao @Neil por economizar 2 bytes.
fonte
choose
e usandopryr::f
a definir a função de:B=choose;pryr::f((B(a*p,b*p)-B(a,b))/p^3)
.MATL , 13 bytes
Experimente online!
O último caso de teste não produz um número inteiro exato devido à precisão numérica. O tipo de dados padrão do MATL (
double
) pode lidar com números inteiros exatos até2^53
.Explicação
fonte
J, 17 bytes
Uso
Por exemplo:
Esta é apenas uma implementação direta da fórmula até agora.
Nota : para a terceira caixa de teste, os números de entrada devem ser definidos como estendidos (para lidar com grandes aritméticas):
fonte
Braquilog , 52 bytes
Experimente online!
Aceita entrada
[[a, b], p]
.fonte
Python 3 com SciPy , 72 bytes
Uma função anônima que recebe entrada por meio de argumento e retorna o resultado.
Não há muita coisa acontecendo aqui; Esta é uma implementação direta da computação desejada.
Experimente no Ideone (o resultado é retornado em notação exponencial para o último caso de teste)
fonte
Nim ,
85827559 bytesEste é um procedimento anônimo; Para usá-lo, ele deve ser passado como argumento para outro procedimento, que o imprime. Um programa completo que pode ser usado para teste é fornecido abaixo
math
Obinom
proc do módulo de Nim calcula o coeficiente binomial de seus dois argumentos.fonte
Python 2 , 67 bytes
Experimente online!
Expressa os coeficientes binomiais aritmeticamente usando esse método .
fonte
JavaScript (ES6), 70 bytes
Salve 1 byte usando o ES7 (em
/p**3
vez de/p/p/p
).fonte
APL (Dyalog) , 18 bytes
Experimente online!
fonte
Pari / GP , 43 bytes
Experimente online!
fonte