Chúng tôi sẽ thực hiện phân chia cho số nguyên lớn tùy ý.
Đây là mã golf .
Nhiệm vụ là viết một chương trình hoặc hàm thực hiện các số nguyên chính xác tùy ý và Phân chia trên chúng.
Lưu ý rằng nhiều thứ có thể làm cho việc này rất dễ dàng không được phép, vui lòng đảm bảo đọc qua thông số kỹ thuật .
Đầu vào
Bạn sẽ được cung cấp 2 thứ làm đầu vào:
- một chuỗi gồm 10 chữ số cơ bản, gọi nó
n
. - một chuỗi gồm 10 chữ số cơ bản, gọi nó
m
Giả sử rằngn>m>0
có nghĩa là bạn sẽ không bao giờ được yêu cầu chia cho số không .
Đầu ra
Bạn sẽ xuất hai số Q
và R
trong đó m * Q + R = n và 0 <= R <m
Thông số kỹ thuật
Việc gửi của bạn phải hoạt động đối với các số nguyên lớn tùy ý (giới hạn bởi bộ nhớ khả dụng).
Bạn không thể sử dụng các thư viện bên ngoài. Nếu bạn cần một thư viện bên ngoài cho i / o, bạn có thể coi nó là một thư viện tích hợp. (nhìn vào những thứ như iostream, v.v.).
Nếu ngôn ngữ của bạn có tích hợp sẵn tầm thường hóa điều này, bạn không thể sử dụng ngôn ngữ đó. Điều này bao gồm (nhưng có thể không giới hạn ở) các loại tích hợp có thể xử lý các số nguyên chính xác tùy ý.
Nếu một ngôn ngữ vì một lý do nào đó sử dụng các số nguyên chính xác tùy ý theo mặc định, chức năng này không thể được sử dụng để biểu diễn các số nguyên không thể được lưu trữ trong 64 bit.
Đầu vào và đầu ra PHẢI ở cơ sở 10 . Việc bạn lưu trữ các số trong bộ nhớ không quan trọng hay cách bạn thực hiện số học trên chúng, nhưng i / o sẽ là cơ sở 10.
Bạn có 15 giây để xuất kết quả. Điều này là để cấm phép trừ lặp.
Mục tiêu ở đây là để thực sự thực hiện các số nguyên chính xác tùy ý. Nếu vì lý do nào đó bạn có thể tuân thủ các thông số kỹ thuật thách thức và thực hiện thành công điều này mà không thực hiện chúng, thì tôi đoán tốt cho bạn, nghe có vẻ hợp lệ.
Các trường hợp thử nghiệm
- Trong trường hợp này, đầu vào là 39! và 30!
Đầu vào
n = 20397882081197443358640281739902897356800000000
m = 265252859812191058636308480000000
Đầu ra
Q = 76899763100160
R = 0
n
là tổng của tất cả các giai thừa lên tới 50, cộng với 1.m
là các số được nối lên tới 20.
đầu vào
n = 31035053229546199656252032972759319953190362094566672920420940313
m = 1234567891011121314151617181920
đầu ra
q = 25138393324103249083146424239449429
r = 62459510197626865203087816633
n
là 205! + 200!.m
PeterTaylor đã làm tôi rơi bao nhiêu nước mắt bằng cách xé tan những thứ tôi đăng trong hộp cát.
Đầu vào
n = 271841734957981007420619769446411009306983931324177095509044302452019682761900886307931759877838550251114468516268739270368160832305944024022562873534438165159941045492295721222833276717171713647977188671055774220331117951120982666270758190446133158400369433755555593913760141099290463039666313245735358982466993720002701605636609796997120000000000000000000000000000000000000000000000000
m = 247
Đầu ra
q = 1100573825740813795225181252819477770473619155158611722708681386445423816849801159141424129060075102231232666057768175183676764503262931271346408394876267875141461722640873365274628650676808557279259873162169126398101692109801549256156915750794061370041981513180387019893765753438422927286098434193260562682052606153857091520795991080960000000000000000000000000000000000000000000000000
r = 0;
Có thể tôi sẽ thêm nhiều trường hợp thử nghiệm tại một số điểm.