Реферат: Задачи на длинную арифметику
VspRez := A[I] * B[J] + P + C[I + J - 1];
C[I + J - 1] := VspRez Mod 10;
P := VspRez Div 10
End;
C[I + J] := P
End
End;
{Основная программа}
Begin
Repeat {повторяем ввод, пока число не будет введено правильно}
Write('Введите первый множитель: ');
ReadLn(S); Translate(S, M, Logic)
Until Logic;
Repeat
Write('Введите второй множитель: ');
ReadLn(S); Translate(S, N, Logic)
Until Logic;
Multiplication(M, N, R); Print(R)
End.
В приведенном листинге Print — процедура вывода длинного числа. Предоставим читателю самостоятельно разобраться в алгоритме ее работы.
Вернемся к вычислению факториала. Используя разработанные подпрограммы, определим, значение факториала какого максимального числа можно разместить в памяти при таком представлении длинных чисел.
Вот измененный фрагмент основной программы, решающий поставленную задачу.
Begin
MaxF := 810;
Zero(F);
F[1] := 1;
For I := 1 To MaxF Do
Begin
Str(I, S); {преобразование числа I к строковому типу S}