Ми будемо здійснювати ділення для довільно великих цілих чисел.
Це код-гольф .
Завдання полягає в тому, щоб написати програму або функцію, яка реалізує довільну точність цілих чисел і поділ на них.
Зауважте, що багато речей, які могли б зробити це дуже легко, заборонені, будь ласка, переконайтеся, що їх прочитали .
Вхідні дані
Вам будуть надані 2 речі як вхідні дані:
- рядок базової 10 цифр, назвіть його
n. - ще один рядок базової 10 цифр, назвіть його
m
Припустимо цеn>m>0 значення, яке від вас ніколи не попросять розділити на нуль .
Вихідні дані
Виведете два числа, Qі Rде m * Q + R = n і 0 <= R <m
Технічні умови
Ваше надсилання має працювати для довільно великих цілих чисел (обмежених наявною пам'яттю).
Ви не можете використовувати зовнішні бібліотеки. Якщо вам потрібна зовнішня бібліотека для вводу-виводу, ви можете розглядати її як вбудовану. (дивлячись на такі речі, як iostream тощо).
Якщо у вашій мові є вбудована версія, яка тривілізує це, ви можете не використовувати її. Сюди входять (але не обмежуються ними) вбудовані типи, які можуть обробляти цілі числа довільної точності.
Якщо мова з якихось причин використовує за замовчуванням довільні цілі числа точності, ця функціональність не може використовуватися для представлення цілих чисел, які зазвичай не можуть бути збережені в 64 бітах.
Вхід і вихід ОБОВ'ЯЗКОВО повинні знаходитись в базі 10 . Не має значення, як ви зберігаєте числа в пам'яті або як ви виконуєте арифметику на них, але введення-виведення буде базовим 10.
У вас є 15 секунд для отримання результату. Це забороняє повторне віднімання.
Мета тут - реально реалізувати довільну точність цілих чисел. Якщо з якихось причин ви в змозі дотримуватися специфікацій викликів і успішно робите це, не втілюючи їх у життя, добре, мабуть, добре для вас, це звучить дійсно.
Випробування
- У цьому випадку вхід становить 39! і 30!
Вхідні дані
n = 20397882081197443358640281739902897356800000000
m = 265252859812191058636308480000000
Вихідні дані
Q = 76899763100160
R = 0
n- це сума всіх фабрикантів до 50, плюс 1.mце об'єднані числа до 20.
вхід
n = 31035053229546199656252032972759319953190362094566672920420940313
m = 1234567891011121314151617181920
вихід
q = 25138393324103249083146424239449429
r = 62459510197626865203087816633
nє 205! + 200 !.mскільки сліз PeterTaylor змусив мене пролити, розриваючи речі, які я розміщую у пісочниці.
Вхідні дані
n = 271841734957981007420619769446411009306983931324177095509044302452019682761900886307931759877838550251114468516268739270368160832305944024022562873534438165159941045492295721222833276717171713647977188671055774220331117951120982666270758190446133158400369433755555593913760141099290463039666313245735358982466993720002701605636609796997120000000000000000000000000000000000000000000000000
m = 247
Вихідні дані
q = 1100573825740813795225181252819477770473619155158611722708681386445423816849801159141424129060075102231232666057768175183676764503262931271346408394876267875141461722640873365274628650676808557279259873162169126398101692109801549256156915750794061370041981513180387019893765753438422927286098434193260562682052606153857091520795991080960000000000000000000000000000000000000000000000000
r = 0;
Я, певно, додам ще тестових випадків у якийсь момент.