целое число произвольного базового деления, без преобразования в основание 10

#algorithm #division #base #integer-division

#алгоритм #деление #База #целочисленное деление

Вопрос:

Целые числа представлены в виде списка целых чисел, например:

  • [13, 2] (D2 в базе 16)
  • [1, 3, 6] (136 в базе 10)

Нам разрешено использовать цифры только по отдельности, они не могут быть преобразованы в целые числа с базовым 10.

Я хотел реализовать деление способом «бумага и карандаш«, иначе называемым «длинным делением«, но оказывается, что для этого требуется, чтобы префиксы делителя и делимого были целыми числами по основанию 10, чтобы иметь возможность выполнять целочисленное деление по основанию 10.

например: чтобы найти 11131/1177, нам нужно сначала найти 1113/1177

Есть ли какой-либо способ разложить деление, подобное 1113/1177, на более мелкие шаги, которые не потребуют никаких делений, кроме таких, чтобы делитель находился в замкнутом диапазоне [1, база — 1]?

Есть ли какой-либо другой способ выполнить это деление не так, как «бумага и карандаш»?

Комментарии:

1. Что вам нужно уметь делать: вычитать, сравнивать, умножать многозначное число на однозначное число. Чтобы найти 1113 / 117 в базе B, выполните двоичный поиск в диапазоне [1, B-1]. Для каждой попытки умножьте 117 на цифру кандидата и сравните с 1113. После нахождения наибольшей цифры D такой, чтобы 117 * D <= 1113 вычесть 117 * D из 1113. Затем переходите к следующему шагу длинного деления.

2. Вам не нужно базовое 10 деление. Paper-and-pensil работает одинаково в любой базе.

3. @user58697 Я думаю, что вы пропустили суть моей проблемы. Я не могу выполнить какое-либо деление с делителем вне [1, база — 1] независимо от базы, потому что это потребовало бы от меня преобразования списка целых чисел в одно число, что мне не разрешено делать. Базовое 10 деление также является единственным доступным в типичной реализации int, кроме битовых сдвигов

4. @user3386109 Я ищу более «прямое» решение, но предложенное u на самом деле правильное, так что спасибо

5. Я не понимаю значения базы 10 в этом вопросе. Большинство компьютеров представляют числа в базе 2.