Реферат: Задачи на длинную арифметику
VspRez := A[I] * B[J] + P + C[I + J - 1];
C[I + J - 1] := VspRez Mod 10; {Очередное значение цифры в
разряде I + J - 1}
P := VspRez Div 10 {Перенос в следующий разряд}
End;
C[I + J] := P {последний перенос может быть отличен от нуля,
запишем его в пока ещё свободный разряд}
End
End;
Сейчас приведем листинг программы целиком.
Program DlUmn;
Const NMax = 2000;
Type Digit = 0..9; DlChislo = Array[1..Nmax] Of Digit;
Var S : String;
M, N, R, F : DlChislo;
I, MaxF : Word;
Logic : Boolean;
{Процедура обнуления длинного числа}
Procedure Zero(Var A : DlChislo);
Var I : Integer;
Begin
For I := 1 To NMax Do A[I] := 0;
End;
{Функция определения количества цифр в записи длинного числа}
Function Dlina(C : DlChislo) : Integer;
Var I : Integer;
Begin
I := NMax;
While (I > 1) And (C[I] = 0) Do I := I - 1;