分析
要用高精度,数组一定要开得大。我做的时候,就是因为数组不够大而和我朋友调试了超久。
const
maxn=2600;
var
a,b:array[1..maxn]of longint;
c:array[1..2*maxn]of longint;
l1,l2:longint;
procedure init;
var
s1,s2:ansistring;
i:longint;
begin
fillchar(a,sizeof(a),0);
fillchar(b,sizeof(b),0);
fillchar(c,sizeof(c),0);
readln(s1);
readln(s2);
l1:=length(s1);
l2:=length(s2);
for i:=l1 downto 1 do
a[l1-i+1]:=ord(s1[i])-ord('0');
for i:=l2 downto 1 do
b[l2-i+1]:=ord(s2[i])-ord('0');
end;
procedure main;
var
i,j:longint;
begin
for i:=1 to maxn do
begin
for j:=1 to maxn do
begin
c[i+j-1]:=a[i]*b[j]+c[i+j-1];
c[i+j]:=c[i+j]+c[i+j-1] div 10;
c[i+j-1]:=c[i+j-1] mod 10;
end;
end;
end;
procedure print;
var
i,j:longint;
begin
i:=maxn;
while (c[i]=0)and(i>1) do dec(i);
for j:=i downto 1 do
write(c[j]);
end;
begin
init;
main;
print;
end.