Kami akan menerapkan divisi untuk bilangan bulat besar yang sewenang-wenang.
Ini adalah kode-golf .
Tugasnya adalah untuk menulis program atau fungsi yang mengimplementasikan bilangan bulat presisi presisi dan Divisi pada mereka.
Perhatikan bahwa banyak hal yang membuat ini sangat mudah tidak diizinkan, pastikan untuk membaca spesifikasi .
Memasukkan
Anda akan diberikan 2 hal sebagai masukan:
- string basis 10 digit, sebut saja
n
. - string lain dari basis 10 digit, sebut saja
m
Asumsikan itun>m>0
berarti bahwa Anda tidak akan pernah diminta untuk membagi dengan nol .
Keluaran
Anda akan menampilkan dua angka, Q
dan di R
mana m * Q + R = n dan 0 <= R <m
Spesifikasi
Kiriman Anda harus berfungsi untuk bilangan bulat besar yang sewenang-wenang (dibatasi oleh memori yang tersedia).
Anda tidak boleh menggunakan perpustakaan eksternal. Jika Anda membutuhkan perpustakaan eksternal untuk i / o, Anda dapat memperlakukannya sebagai built-in. (melihat hal-hal seperti iostream, dll).
Jika bahasa Anda memiliki built-in yang meremehkan ini, Anda mungkin tidak menggunakannya. Ini termasuk (tetapi mungkin tidak terbatas pada) tipe bawaan yang dapat menangani bilangan bulat presisi sewenang-wenang.
Jika suatu bahasa karena suatu alasan menggunakan bilangan bulat presisi arbitrer secara default, fungsi ini tidak dapat digunakan untuk mewakili bilangan bulat yang tidak dapat biasanya disimpan dalam 64 bit.
Input dan output HARUS berada di basis 10 . Tidak masalah bagaimana Anda menyimpan angka dalam memori atau bagaimana Anda melakukan aritmatika pada mereka, tetapi i / o akan menjadi basis 10.
Anda memiliki 15 Detik untuk menampilkan hasil. Ini untuk mencegah pengurangan yang diulang.
Tujuannya di sini adalah untuk benar-benar mengimplementasikan bilangan bulat presisi sewenang-wenang. Jika karena alasan tertentu Anda dapat mematuhi spesifikasi tantangan dan berhasil melakukan ini tanpa menerapkannya, baik saya kira baik untuk Anda, kedengarannya valid.
Uji Kasus
- Dalam hal ini, inputnya adalah 39! dan 30!
Memasukkan
n = 20397882081197443358640281739902897356800000000
m = 265252859812191058636308480000000
Keluaran
Q = 76899763100160
R = 0
n
adalah jumlah semua faktorial hingga 50, ditambah 1.m
adalah angka gabungan hingga 20.
memasukkan
n = 31035053229546199656252032972759319953190362094566672920420940313
m = 1234567891011121314151617181920
keluaran
q = 25138393324103249083146424239449429
r = 62459510197626865203087816633
n
adalah 205! + 200 !.m
adalah berapa banyak air mata yang PeterTaylor buat untuk saya tumpahkan dengan merobek-robek hal-hal yang saya poskan di kotak pasir.
Memasukkan
n = 271841734957981007420619769446411009306983931324177095509044302452019682761900886307931759877838550251114468516268739270368160832305944024022562873534438165159941045492295721222833276717171713647977188671055774220331117951120982666270758190446133158400369433755555593913760141099290463039666313245735358982466993720002701605636609796997120000000000000000000000000000000000000000000000000
m = 247
Keluaran
q = 1100573825740813795225181252819477770473619155158611722708681386445423816849801159141424129060075102231232666057768175183676764503262931271346408394876267875141461722640873365274628650676808557279259873162169126398101692109801549256156915750794061370041981513180387019893765753438422927286098434193260562682052606153857091520795991080960000000000000000000000000000000000000000000000000
r = 0;
Saya mungkin akan menambahkan lebih banyak test case di beberapa titik.