{说明:用字符串来存放乘数,最大限制255位乘255位}
program jjzx; {本程序只考虑整数相乘}
var
s1,s2:string;
a,b:array[1..255] of integer;
c:array[1..510] of integer; {数组C用来存放结果,最大510位,为什么?}
i,j,l,m,k1,k2,x,y,z,w:integer;
begin
writeln('input s1:'); readln(s1);
writeln('input s2:'); readln(s2);
l:=length(s1); m:=length(s2); {得到两个字符串的长度}
k1:=0;
for i:=l downto 1 do {S1转换过程,把低位放在A[1]中}
begin
k1:=k1+1;
a[k1]:=ord(s1[i])-48;
end;
k2:=0;
for i:=m downto 1 do {S2转换过程,把低位放在B[1]中}
begin
k2:=k2+1;
b[k2]:=ord(s2[i])-48 ;
end;
for i:=1 to k1 do {开始计算,从低位开始乘}
for j:=1 to k2 do
begin
x:=a[i]*b[j];
y:=x div 10;
z:=x mod 10;
w:=i+j-1;
c[w]:=c[w]+z;
c[w+1]:=c[w+1]+y+c[w] div 10;
c[w]:=c[w]mod 10
end;
w:=k1+k2;
if c[w]=0 then w:=w-1; {判断最高位是否有数}
writeln('相乘结果是 :');
for i:=w downto 1 do write(c[i]);{输出的时候注意顺序}
writeln
end.