Как найти A% B для A и B очень большие числа (хранятся в строке) - PullRequest
0 голосов
/ 18 ноября 2018

Если у меня есть два числа A и B, и я хочу вычислить A% B, для A и B очень большие (например, 10 ^ 100), оба хранятся в строках, как мне этого добиться?

Ответы [ 2 ]

0 голосов
/ 18 ноября 2018

Если вы хотите поэкспериментировать с этим, вы можете реализовать алгоритм деления непосредственно в строковом представлении.

Добавление двух чисел не имеет большого значения (справа налево, добавьте значения ASCIIи вычтите это из 0; несите при необходимостиВычитание аналогично.И сравнение двух чисел также очень похоже.

Умножением числа на цифру также можно управлять (справа налево, преобразовать ASCII-> цифру, выполнить умножение и преобразовать крайнюю правую цифру в ASCII;переносы могут быть больше, но могут помещаться в целое число).

Ключевая операция: с учетом дивиденда и делителя найти крайнюю левую цифру отношения.

Например:

3452 : 27

27 подходит один раз в 34, следовательно, первая цифра равна 1. Теперь вычтите и получите следующую цифру

 3452
-27
= 752

27 подходит 2 раза в 75, и

 752
-54
=212

Наконец, 27 подходит 7 раз в 212 и

 212
-189
= 23

, что является остатком.

0 голосов
/ 18 ноября 2018

10 ^ 100 на самом деле не так уж велик, поэтому вы можете просто использовать такой язык, как Python, у которого нет явно определенного ограничения на размер длинных целых чисел.

Если вы хотите просто выполнитьвычисляя один раз, вы можете просто использовать калькулятор большого числа, например здесь .

...