Определение
Теорема Вольстенхольма утверждает, что:
где a
и b
- положительные целые числа и p
простые числа, а большие круглые скобки - это биномиальный коэффициент .
задача
Для того, чтобы убедиться в том, что вам будет дано три входа: a
, b
, p
, где a
и b
положительные целые числа , и p
является простым.
Compute:
где a
и b
являются положительными целыми числами и p
простыми числами , а в круглых скобках - биномиальный коэффициент .
Спекуляции
Поскольку:
где и в скобках вещь является биномиальным коэффициентом .
Вы можете предположить, что 2b <= a
Testcases
a b p output
6 2 5 240360
3 1 13 3697053
7 3 13 37403621741662802118325
code-golf
number-theory
combinatorics
Дрянная Монахиня
источник
источник
.0
в конце, чтобы действительно показать, что нет остатка от деления.[240360]
(одноэлементный массив) приемлемым выходным форматом?Ответы:
Haskell,
7371 байтИз-за рекурсии эта реализация очень медленная. К сожалению, мое определение биномиального коэффициента имеет ту же длину, что и
import Math.Combinatorics.Exact.Binomial
.Интересная странность состоит в том, что Haskell 98 действительно допускал арифметические шаблоны, которые сократили бы тот же код до 64 байтов:
источник
Желе ,
121110 байтОжидается
a, b
и вp
качестве аргументов командной строки.Попробуйте онлайн! или проверьте все контрольные примеры .
Как это устроено
источник
Python 2,
1141098571 байтПростая реализация. Предложения по игре в гольф приветствуются.
Изменить: -29 байт благодаря Дрянной Монахине и -14 байт благодаря Деннису.
Более простая альтернатива той же длины, благодаря Деннису, это
источник
05AB1E , 11 байт
Принимает вход как:
Код:
Использует кодировку CP-1252 . Попробуйте онлайн! ,
источник
R,
5048 байтовКак можно проще ... Спасибо @Neil за сохранение 2 байта.
источник
choose
и с помощьюpryr::f
определения функции:B=choose;pryr::f((B(a*p,b*p)-B(a,b))/p^3)
.MATL , 13 байт
Попробуйте онлайн!
Последний тестовый пример не дает точное целое число из-за числовой точности. Тип данных по умолчанию MATL (
double
) может обрабатывать только точные целые числа до2^53
.объяснение
источник
J, 17 байт
использование
Например:
Пока это просто прямая реализация формулы.
Примечание : для 3-го тестового набора входные числа должны быть определены как расширенные (для обработки большой арифметики):
источник
Брахилог , 52 байта
Попробуйте онлайн!
Принимает ввод
[[a, b], p]
.источник
Python 3 с SciPy , 72 байта
Анонимная функция, которая принимает входные данные через аргумент и возвращает результат.
Здесь не так много происходит; это прямая реализация желаемого вычисления.
Попробуйте это на Ideone (результат возвращается в экспоненциальной записи для последнего контрольного примера)
источник
Ним ,
85827559 байтЭто анонимная процедура; чтобы использовать его, он должен быть передан в качестве аргумента другой процедуре, которая его печатает. Полная программа, которую можно использовать для тестирования, приведена ниже.
math
Модуль Нимаbinom
вычисляет биномиальный коэффициент двух аргументов.источник
Python 2 , 67 байт
Попробуйте онлайн!
Выражает биномиальные коэффициенты арифметически с использованием этого метода .
источник
JavaScript (ES6), 70 байт
Сохраните 1 байт, используя ES7 (
/p**3
вместо/p/p/p
).источник
APL (Дьялог) , 18 байт
Попробуйте онлайн!
источник
Пари / ГП , 43 байта
Попробуйте онлайн!
источник