Bilangan bulat yang diberikan N , P > 1
, temukan bilangan bulat terbesar M
sehingga P ^ M ≤ N
.
I / O:
Input diberikan sebagai 2 bilangan bulat N
dan P
. Outputnya adalah integer M
.
Contoh:
4, 5 -> 0
33, 5 -> 2
40, 20 -> 1
242, 3 -> 4
243, 3 -> 5
400, 2 -> 8
1000, 10 -> 3
Catatan:
Input akan selalu valid, yaitu selalu lebih besar dari 1.
Kredit:
Kredit untuk nama tersebut masuk ke @cairdcoinheringaahing. 3 contoh terakhir adalah oleh @Nitrodon dan kredit untuk meningkatkan deskripsi pergi ke @Giuseppe.
code-golf
math
number
arithmetic
Muhammad Salman
sumber
sumber
Jawaban:
Brain-Flak , 74 byte
Cobalah online!
Ini menggunakan konsep yang sama dengan algoritma pembagian integer positif Brain-Flak standar.
sumber
JavaScript (ES6), 22 byte
Disimpan 8 byte berkat @Neil
Mengambil input dalam sintaks currying
(p)(n)
.Cobalah online!
sumber
Excel, 18 byte
Mengambil input "n" di A1, dan input "p" di A2.
sumber
INT
fungsi alih-alihTRUNC
menyimpan 2 byte.Jelly , 3 byte
Ini tidak menggunakan aritmatika floating-point, jadi tidak ada masalah presisi.
Cobalah online!
Bagaimana itu bekerja
sumber
Retina 0.8.2 , 35 byte
Cobalah online! Penjelasan:
Konversikan argumen menjadi unary.
Jika argumen kedua membagi yang pertama, ganti argumen pertama dengan hasil
#
plus bilangan bulat, buang sisanya. Ulangi ini sampai argumen pertama kurang dari yang kedua.Hitung berapa kali loop berjalan.
sumber
Japt, 8 byte
Cobalah
sumber
F.g()
- tapi mereka sangat berguna.Haskell , 30 byte
Cobalah online!
sumber
until((>n).(p^))(1+)0-1
atauuntil(\x->p^x*p>n)(1+)0
membuat Anda ke 27 byte.Perl 6 , 13 byte
Cobalah online!
Rangkaian penyusun log dan lantai, secara implisit memiliki 2 argumen karena fungsi pertama log mengharapkan 2. Hasil adalah fungsi.
sumber
1000, 10
ini mengembalikan 2.Haskell , 16 byte
Cobalah online!
Haskell dirancang oleh ahli matematika sehingga memiliki seperangkat fungsi terkait matematika yang bagus di Prelude.
sumber
R , 25 byte
Cobalah online!
Ambil log
P
basisN
dan lakukan pembagian integer1
, karena lebih pendek darifloor()
. Ini sedikit menderita dari ketepatan numerik, jadi saya menyajikan jawaban di bawah ini juga, yang seharusnya tidak, terlepas dari kemungkinan integer overflow.R , 31 byte
Cobalah online!
sumber
p
denganp+.1
jawaban 25 byte dan Anda akan tetap baik-baik saja, untuk 28 bytePython 2 , 39 byte
Cobalah online!
sumber
Ruby , 31 byte
OK, jadi semua pendekatan berbasis log itu rentan terhadap kesalahan pembulatan, jadi di sini adalah metode lain yang bekerja dengan bilangan bulat dan bebas dari masalah itu:
Cobalah online!
Tetapi kembali ke logaritma, meskipun tidak jelas sampai ketepatan apa kita harus mendukung input, tapi saya pikir trik kecil ini akan menyelesaikan masalah pembulatan untuk semua lebih atau kurang angka "realistis":
Ruby , 29 byte
Cobalah online!
sumber
C (gcc) +
-lm
, 24 byteCobalah online!
sumber
long long
tapi apa itubytes bytes
? : Pf(n,m){n=(float)log(n)/log(m);}
tampaknya berfungsi @ 31 byteEmojicode ,
4948 byteCobalah online!
sumber
APL (Dyalog Unicode) , 2 byte
Cobalah online!
Cukup mudah.
⍟
Catatan⌊
lantaisumber
⌊⍟
05AB1E , 6 byte
Cobalah online!
sumber
JavaScript ,
4033 byte-3 byte terima kasih kepada DanielIndie
Mengambil input dalam sintaks currying.
Cobalah online!
sumber
toString
solusi hanya bekerja untuk pangkalan hingga 36.Pari / GP, 6 byte
(built-in ditambahkan dalam versi 2.7, Mar 2014. Membawa dua argumen, dengan referensi ketiga opsional yang, jika ada, diatur ke pangkalan yang diangkat ke hasil)
sumber
logint
mana yang valid dan kurang dari 5 byte.Python 2, 3, 46 byte
-1 berkat jonathan
Python 1, 47 byte
sumber
n~-i
lebih pendek satu byte darin i-1
.JavaScript (Node.js) , 22 byte
Cobalah online!
Fungsi rekursif kari. Gunakan sebagai
g(P)(N)
. Kurang rentan terhadap kesalahan floating-point daripada menggunakanMath.log
, dan (saya percaya) kode memberikan nilai yang benar selama kedua input adalah integer aman (di bawah2**52
).sumber
Haskell ,
3534 byteTerima kasih @Laikoni untuk menghemat 1 byte
Cobalah online!
sumber
J , 5 byte
Cobalah online!
sumber
Bahasa Wolfram (Mathematica)
1510 Bytes(membutuhkan urutan terbalik pada input)
Pengiriman asli
sumber
⌊Log@##⌋&
lebih pendek satu byteKeempat (gforth) , 35 byte
Cobalah online!
Bisa menghemat 5 byte dengan menukar parameter input yang diharapkan, tetapi pertanyaan menentukan N harus menjadi yang pertama (argumen dapat dibuat bahwa dalam bahasa postfix "Pertama" berarti top-of-stack, tapi saya akan tetap berpegang pada surat aturan untuk sekarang)
Penjelasan
sumber
Pyth,
64 byteDisimpan 2 byte berkat Mmenomic
Cobalah online
Bagaimana itu bekerja
.l
is log B (A)Sejujurnya, saya tidak tahu cara
F
kerjanya. Tetapi jika itu berhasil, itu akan berhasil.s
memotong float ke int untuk memberi kita integer tertinggi untukM
.sumber
/FlM
Bertanya-tanya , 9 byte
Contoh penggunaan:
Penjelasan
Versi verbal:
Ini adalah gaya pointfree tertulis.
sS
meneruskan item daftar sebagai argumen ke fungsi (dalam hal ini,log
).sumber
Gforth , 31 Bytes
Pemakaian
Cobalah online!
Penjelasan
Sayangnya FORTH menggunakan stack-point-stack khusus. Untuk itu saya harus
SWAP
(bertukar) nilai input sehingga mereka sampai ke tumpukan floating point dalam urutan yang benar. Saya juga harus memindahkan nilai ke tumpukan ituS>F
. Ketika memindahkan hasil floating-point kembali ke integer (F>S
) saya mendapat manfaat untuk mendapatkan pemotongan gratis.Versi lebih pendek
Membentang persyaratan dan memberikan input dalam format float dan urutan yang tepat, ada versi yang lebih pendek dengan 24 byte.
Cobalah online!
sumber
: f .... ;
atau dikonversi ke program yang mengambil input menggunakanKEY
atauACCEPT
Sekam ,
874 byteCobalah online!
sumber
C (gcc) , 61 byte
Cobalah online!
sumber
Japt , 5 byte
Cobalah online!
8 byte
Cobalah online!
sumber
ì
bukans
sebagais
akan gagal jikaV>36
.V>36
.