Wprowadzimy podział na dowolnie duże liczby całkowite.
To jest golf golfowy .
Zadanie polega na napisaniu programu lub funkcji, która implementuje na nich dowolne liczby całkowite precyzji i dzielenie.
Pamiętaj, że wiele rzeczy, które mogą sprawić, że będzie to bardzo łatwe, jest niedozwolonych, przeczytaj tę specyfikację .
Wejście
Otrzymasz 2 rzeczy jako dane wejściowe:
- ciąg 10 cyfr, nazwij to
n
. - inny ciąg 10 cyfr podstawowych, nazwij to
m
Załóżmy, żen>m>0
oznacza to , że nigdy nie będziesz proszony o podzielenie przez zero .
Wynik
Wyprowadzisz dwie liczby, Q
a R
gdzie m * Q + R = n i 0 <= R <m
Dane techniczne
Przesłanie powinno działać dla dowolnie dużych liczb całkowitych (ograniczonych dostępną pamięcią).
Nie możesz używać bibliotek zewnętrznych. Jeśli potrzebujesz zewnętrznej biblioteki dla we / wy, możesz potraktować ją jako wbudowaną. (patrząc na rzeczy takie jak iostream itp.).
Jeśli Twój język ma wbudowaną funkcję, która trywializuje to, nie możesz go używać. Obejmuje to (ale nie wyłącznie) typy wbudowane, które mogą obsługiwać liczby całkowite o dowolnej precyzji.
Jeśli język z jakiegoś powodu domyślnie używa liczb całkowitych o dowolnej precyzji, tej funkcji nie można użyć do przedstawienia liczb całkowitych, które zwykle nie mogą być przechowywane w 64 bitach.
Wejście i wyjście MUSZĄ znajdować się w bazie 10 . Nie ma znaczenia, w jaki sposób przechowujesz liczby w pamięci lub jak wykonujesz na nich arytmetykę, ale we / wy będzie bazą 10.
Masz 15 sekund na wyprowadzenie wyniku. Ma to na celu zakazanie iterowanego odejmowania.
Celem jest tutaj implementacja liczb całkowitych o dowolnej precyzji. Jeśli z jakiegoś powodu jesteś w stanie zastosować się do specyfikacji wyzwania i z powodzeniem zrobić to bez ich implementacji, to chyba dobrze dla ciebie, brzmi poprawnie.
Przypadki testowe
- W tym przypadku dane wejściowe wynoszą 39! i 30!
Wejście
n = 20397882081197443358640281739902897356800000000
m = 265252859812191058636308480000000
Wynik
Q = 76899763100160
R = 0
n
jest sumą wszystkich silni do 50, plus 1.m
to połączone liczby do 20.
Wejście
n = 31035053229546199656252032972759319953190362094566672920420940313
m = 1234567891011121314151617181920
wynik
q = 25138393324103249083146424239449429
r = 62459510197626865203087816633
n
jest 205! + 200 !.m
to ile łez PeterTaylor sprawił, że wylałem, rozrywając rzeczy, które umieszczam w piaskownicy.
Wejście
n = 271841734957981007420619769446411009306983931324177095509044302452019682761900886307931759877838550251114468516268739270368160832305944024022562873534438165159941045492295721222833276717171713647977188671055774220331117951120982666270758190446133158400369433755555593913760141099290463039666313245735358982466993720002701605636609796997120000000000000000000000000000000000000000000000000
m = 247
Wynik
q = 1100573825740813795225181252819477770473619155158611722708681386445423816849801159141424129060075102231232666057768175183676764503262931271346408394876267875141461722640873365274628650676808557279259873162169126398101692109801549256156915750794061370041981513180387019893765753438422927286098434193260562682052606153857091520795991080960000000000000000000000000000000000000000000000000
r = 0;
Prawdopodobnie w pewnym momencie dodam więcej przypadków testowych.