Archive for the '高精度' Category

[高精度]加法

Jul 11 2010 Published by yo2BcHo under OI,学习,高精度

现在开一个高精度的专题来练习

加法

Part I

简单加法(没有处理负数)


[cc lang="Pascal"]const
maxn=150;
type
nn=record
d:array[1..maxn] of integer;
l:1..maxn;
end;
var
numA,numB,ans:nn;
i,j,carry:integer;
function whoMax(a,b:integer):integer;
begin
if a>b then exit(a) else exit(b);
end;
procedure readNum(var num:nn);
var
i:integer;
c:char;
begin
fillchar(num.d,sizeof(num.d),0);
for i:=1 to num.l do
begin
read(c);
num.d[num.l-i+1]:=ord(c)-ord('0');
end;
readln;
end;
begin
readln(numA.l,numB.l);
readNum(numA);readNum(numB);
carry:=0;
ans.l:=whoMax(numA.l,numB.l)+1;
for i:=1 to ans.l do
begin
ans.d[i]:=(numA.d[i]+numB.d[i]+carry) mod 10;
carry:=(numA.d[i]+numB.d[i]+carry) div 10;
end;
while (ans.d[ans.l]=0) and (ans.l>1) do dec(ans.l);
for i:=ans.l downto 1 do write(ans.d[i]);
writeln;
end.
[/cc]

No responses yet