Значение было недопустимо большим для UInt64.


#1

Добрый день! Нужна консультация: программа для нахождения произведения 2-х чисел (метод Карацубы). Uses GraphABC;

var n10,n20,i,p,k: uint64;
a,b,c,d: uint64; x,y: uint64;
z,z1:uint64;

begin Window.Clear(clGreen);

write('Введите число1: '); readln(x); writeln(x); write('Введите число2: '); readln(y); writeln(y); write('Введите разрядность: '); readln(k); writeln(k);

k:=k div 2; p:=1; for i:=1 to k do p:=p10; writeln(‘p=’,p); a := x div p; b := x mod p; writeln(‘a=’,a); writeln(‘b=’,b); c := y div p; d := y mod p; writeln(‘c=’,c); writeln(‘d=’,d); n10:=1; for i:=1 to k+k do n10:=n1010;
writeln(‘n10=’,n10); n20:=1; for i:=1 to k do n20:=n2010;
writeln(‘n20=’,n20); z:=n10
ac+n20(ad+bc)+bd; writeln(‘z=’,z); z1:=xy; writeln(‘z1=’,z1); end. вроде работает корректно… НО… Как сделать чтобы можно было работать с целыми числами, длина у которых >50 -ти знаков? Спасибо.


#2

Использовать BigInteger