高精度加法passcal怎么做?

来源:百度知道 编辑:UC知道 时间:2024/06/20 13:36:01

还有可以优化的地步,有兴趣+QQ422033281
type
high=array[0..255]of byte;

var
a,b,c:high;
i:longint;

function max(a,b:longint):longint;
begin
if a>b then exit(a) else exit(b);
end;

procedure readin(var a:high);
var
i:longint;
s:ansistring;
begin
readln(s);
fillchar(a,sizeof(a),0);
a[0]:=length(s);
for i:=a[0] downto 1 do
a[i]:=ord(s[i])-ord('0');
a[0]:=max(a[0],1);
end;

function add(a,b:high):high;
var
i,g,s:longint;
ans:high;
begin
g:=0;
fillchar(ans,sizeof(ans),0);
ans[0]:=max(a[0],b[0])+2;
for i:=1 to ans[0] do begin
s:=a[i]+b[i]+g;
ans[i]:=s mod 10;
g:=s div 10;
end;
while (ans[ans[0]]=0)and(ans[0]>1) do dec(ans[0]);
add:=ans;
end;

begin
write('Input a:');
readin(a);
write('Inp