A div B
(Время: 1 сек. Память: 16 Мб Сложность: 40%)
Рассмотрим процесс деления длинного числа на короткое. Будем руководствоваться теми же принципами, что и при делении "в столбик". Будем в некоторой переменной хранить текущее значение, по которому будет определяться последующая цифра результата, которая получается из целочисленного деления текущего значения на делитель. Далее вычисляем следующее текущее значение как (x mod b)*10+r, где x-старое текущее значение, b - последняя вычисленная цифра, а r - следующая цифра делимого. Процесс продолжается до последней цифры длинного числа.
Алгоритм, реализующий данную задачу может быть записан в следующем виде:
const maxsize=101;
int a[maxsize], b;
readlong(a);
read(b);
x=0; k=0;
for i=a[0]..1{
x = x*10+a[i];
if(x < b and k=0 and i > 1) continue;
k=1;
write(x div b);
x = x mod b;
}
Информацию о представлении длинных чисел и реализацию функции readlong вы можете прочитать здесь.
|