Menerapkan fungsi divide(int a, int b, int c)
yang mencetak nilai basis 10 dari a/b
. tanpa menggunakan matematika floating point atau BigInteger
/ BigDecimal
atau perpustakaan setara apa pun. Setidaknya c
karakter yang akurat dalam himpunan 0123456789.
harus dicetak, kecuali untuk pengecualian (mungkin) pada poin 4 di bawah ini.
a
danb
bisa berupa bilangan bulat 32 bit. Pembaruan: Jika, untuk tujuan bermain golf, Anda ingin input menjadi primitif 64 bit, tidak apa-apa, tetapi Anda tidak perlu mendukung seluruh rentang data 64 bit.- Anda tidak perlu memeriksa
c
apakah positif (walaupun semoga program Anda tidak macet) jika tidak. - Batas atas minimum yang didukung
c
adalah500
. Tidak apa-apa jika program Anda tidak mendukung nilai-nilai dic
atas500
, tetapi juga tidak apa-apa jika itu benar. - Untuk angka yang membagi secara merata, adalah pilihan Anda untuk mencetak nol ekstra (berdasarkan nilai
c
) atau tidak sama sekali. - Anda tidak perlu dapat menggunakan fungsi untuk melakukan tugas lebih lanjut dengan hasil bagi, satu-satunya tujuan adalah mencetak.
- Untuk angka di antara
-1
dan1
, itu adalah pilihan Anda apakah akan mencetak pemimpin0
. Namun, ini adalah satu-satunya skenario di mana pencetakan nol depan dapat diterima, dan Anda hanya dapat mencetak satu nol tersebut. - Anda dapat menggunakan logika pembulatan / lantai / langit-langit yang Anda sukai untuk tempat desimal terakhir.
- Untuk jawaban negatif, Anda harus mencetak pemimpin
-
. Ini tidak diperhitungkanc
. Namun, itu adalah pilihan Anda jika Anda ingin mencetak,
+
atau apa-apa untuk jawaban positif. - Divisi integer dan modulus integer keduanya diperbolehkan. Namun, perlu diingat bahwa Anda dibatasi untuk primitif, kecuali jika Anda memilih untuk menerapkan sendiri
BigInteger
/BigDecimal
library yang penting terhadap panjang kode Anda. - Anda tidak perlu menangani
b
makhluk0
, meskipun Anda bisa jika mau. Program Anda dapat memasukkan loop tak terbatas, atau crash, jikab=0
, dan Anda tidak akan dihukum. - Perubahan aturan sedikit per komentar. Untuk memastikan lapangan bermain level, sementara
a
danb
dijamin bilangan bulat 32 bit, Anda dapat menggunakan bilangan bulat 64 bit. Jika bahasa yang Anda pilih melampaui bilangan bulat 64 bit sebagai primitif, Anda tidak boleh menggunakan fungsi tersebut (berpura-pura dibatasi pada 64 bit). - Poin lain yang tidak jelas (seharusnya tidak mengubah salah satu jawaban yang valid saat ini): sementara
c
dapat diartikan sebagai jumlah karakter yang dicetak atau jumlah spasi setelah desimal, program Anda harus menggunakanc
entah bagaimana dengan cara yang relevan untuk memutuskan berapa banyak karakter yang akan dicetak. Dengan kata lain,divide(2,3,2)
output harus jauh lebih pendek daripadadivide(2,3,500)
; tidak apa-apa untuk mencetak 500 karakter tanpa memperhatikanc
. - Saya sebenarnya tidak peduli dengan nama fungsinya.
d
boleh digunakan untuk bermain golf.
Memasukkan
Panggilan fungsi dan membaca dari stdin
diterima. Jika Anda membaca dari stdin
, karakter apa pun yang tidak ada dalam set [-0123456789]
dianggap sebagai pembatas argumen.
Keluaran
Karakter stdout
seperti yang dijelaskan di atas.
Contoh
karena divide(2,3,5)
, semua yang berikut ini adalah keluaran yang dapat diterima:
0.666
0.667
.6666
.6667
0.666
0.667
.6666
.6667
+0.666
+0.667
+.6666
+.6667
Contoh lain: untuk divide(371,3,5)
yang berikut ini adalah semua output yang dapat diterima:
123.6
123.7
123.6
123.7
+123.6
+123.7
123.66666
123.66667
123.66666
123.66667
+123.66666
+123.66667
Dan untuk divide(371,-3,5)
yang berikut semuanya dapat diterima:
-123.6
-123.7
-123.66666
-123.66667
92,3,5
jawabannya akan, misalnya,30.67