您的位置:首页 > 其它

NOIP复习-003——高精

2015-11-01 16:43 204 查看
NUM.ONE——高精乘

var a,b,c:array[1..100]of longint;
s,s1,s2:ansistring;
i,j,k,l,m,n:longint;
begin
readln(s1);
readln(s2);
if length(s1)<length(s2) then
begin
s:=s1;s1:=s2;s2:=s;
end;
n:=0;
for i:=length(s1) downto 1 do
begin
inc(n);
a
:=ord(s1[i])-ord('0');
end;
n:=0;
for i:=length(s2) downto 1 do
begin
inc(n);
b
:=ord(s2[i])-ord('0');
end;
fillchar(c,sizeof(c),0);
for i:=1 to length(s2) do
begin
for j:=1 to length(s1) do
begin
c[i+j-1]:=c[i+j-1]+a[j]*b[i];
end;
end;
n:=0;
repeat
inc(n);
if c
>9 then
begin
k:=c
div 10;
c
:=c
mod 10;
c[n+1]:=c[n+1]+k;
end;
k:=0;
until (n>length(s1)+length(s2));
while c
=0 do
dec(n);
for i:=n downto 2 do
write(c[i]);
writeln(c[1]);
end.


NUM.TWO——高精加

var a,b,c:array[1..100]of longint;
i,j,k,l,m,n,t:longint;
s1,s2,s:ansistring;
begin
readln(s1);
readln(s2);
fillchar(c,sizeof(c),0);
if length(s1)<length(s2) then
begin
s:=s1;
s1:=s2;
s2:=s;
end;
n:=0;
for i:=length(s1) downto 1 do
begin
inc(n);
a
:=ord(s1[i])-ord('0');
end;
n:=0;
for i:=length(s2) downto 1 do
begin
inc(n);
b
:=ord(s2[i])-ord('0');
end;
k:=0;
for i:=1 to length(s1) do
begin
c[i]:=c[i]+a[i]+b[i];
if c[i]>=10 then
begin
t:=c[i];
c[i]:=t mod 10;
k:=t div 10;
end;
c[i+1]:=k;
k:=0;
end;
i:=length(s1)+1;
while c[i]=0 do
dec(i);
for j:=i downto 2 do
write(c[j]);
writeln(c[1]);
end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: