Definisi
Teorema Wolstenholme menyatakan bahwa:
di mana a
dan b
bilangan bulat positif dan p
prima, dan tanda kurung besar adalah koefisien Binomial .
Tugas
Untuk memverifikasi bahwa, Anda akan diberikan tiga input: a
, b
, p
, di mana a
dan b
adalah bilangan bulat positif dan p
perdana.
Menghitung:
di mana a
dan b
bilangan bulat positif dan p
prima, dan tanda kurung adalah koefisien Binomial .
Spesifikasi
Sejak:
dimana dan tanda kurung adalah koefisien Binomial .
Anda bisa berasumsi itu 2b <= a
Testcases
a b p output
6 2 5 240360
3 1 13 3697053
7 3 13 37403621741662802118325
code-golf
number-theory
combinatorics
Biarawati Bocor
sumber
sumber
.0
pada akhirnya, untuk benar - benar menunjukkan bahwa tidak ada sisa dari divisi.[240360]
(array tunggal) menjadi format output yang dapat diterima?Jawaban:
Haskell,
7371 byteKarena rekursi, implementasi ini sangat lambat. Sayangnya definisi saya tentang koefisien binomial memiliki panjang yang sama dengan
import Math.Combinatorics.Exact.Binomial
.Keanehan yang menarik adalah bahwa Haskell 98 memang memungkinkan untuk pola aritmatika yang akan mempersingkat kode yang sama menjadi 64 byte:
sumber
Jelly ,
121110 byteMengharapkan
a, b
danp
sebagai argumen baris perintah.Cobalah online! atau verifikasi semua kasus uji .
Bagaimana itu bekerja
sumber
Python 2,
1141098571 byteImplementasi yang sederhana. Saran bermain golf diterima.
Sunting: -29 bytes berkat Leaky Nun dan -14 bytes berkat Dennis.
Alternatif yang lebih sederhana, sama panjang, dengan terima kasih kepada Dennis, adalah
sumber
05AB1E , 11 byte
Mengambil input sebagai:
Kode:
Menggunakan pengkodean CP-1252 . Cobalah online! .
sumber
R,
5048 byteSesederhana mungkin ... Terima kasih kepada @Neil untuk menyimpan 2 byte.
sumber
choose
dan dengan menggunakanpryr::f
untuk menentukan fungsi:B=choose;pryr::f((B(a*p,b*p)-B(a,b))/p^3)
.MATL , 13 byte
Cobalah online!
Kasing uji terakhir tidak menghasilkan bilangan bulat yang tepat karena presisi numerik. Tipe data standar MATL (
double
) hanya dapat menangani bilangan bulat yang tepat hingga2^53
.Penjelasan
sumber
J, 17 byte
Pemakaian
Sebagai contoh:
Ini hanyalah implementasi langsung dari formula sejauh ini.
Catatan : untuk nomor input testcase ke-3 harus didefinisikan sebagai extended (untuk menangani aritmatika besar):
sumber
Brachylog , 52 byte
Cobalah online!
Menerima input
[[a, b], p]
.sumber
Python 3 dengan SciPy , 72 byte
Fungsi anonim yang mengambil input melalui argumen dan mengembalikan hasilnya.
Tidak banyak yang terjadi di sini; ini adalah implementasi langsung dari perhitungan yang diinginkan.
Cobalah di Ideone (hasilnya dikembalikan dalam notasi eksponensial untuk kasus uji terakhir)
sumber
Nim ,
85827559 byteIni adalah prosedur anonim; untuk menggunakannya, itu harus diteruskan sebagai argumen ke prosedur lain, yang mencetaknya. Program lengkap yang dapat digunakan untuk pengujian diberikan di bawah ini
Proc
math
modul Nimbinom
menghitung koefisien binomial dari dua argumennya.sumber
Python 2 , 67 byte
Cobalah online!
Mengungkapkan koefisien binomial secara hitung menggunakan metode ini .
sumber
JavaScript (ES6), 70 byte
Hemat 1 byte dengan menggunakan ES7 (
/p**3
bukan/p/p/p
).sumber
APL (Dyalog) , 18 byte
Cobalah online!
sumber
Pari / GP , 43 byte
Cobalah online!
sumber