- 高精度乘法
- 2009-01-03 22:19:16 @
var
a,b,c:array[1..10000]of integer;
i,j,x,e,y,z,w,l1,l2:integer;
s1,s2,s:string;
begin
readln(s1);
readln(s2);
l1:=length(s1);
l2:=length(s2);
for i:=l1 downto 1do
a[l1-i+1]:=ord(s1[i])-ord('0');
for i:=l2 downto 1do
b[l2-i+1]:=ord(s2[i])-ord('0');
for i:=1to l1 do
for j:=1to l2 do
begin
x:=a[i]*b[j];
z:=x mod 10;
y:=x div 10;
w:=i+j-1;
c[w]:=c[w]+z;
c[w+1]:=c[w+1]+c[w]div 10+y;
c[w]:=c[w] mod 10;
end;
e:=l1+l2;
while c[e]=0 do e:=e-1;
for i:=e downto 1do
write(c[i]);
writeln;
end.
只有细节改了下,其他的几乎和教科书上的一样,怎么只有50分捏?
Where is wrong?
4 条评论
-
qiuhaiyi LV 8 @ 2016-10-22 08:35:03
s1,s2,s:ansisring;
-
2016-07-12 21:56:09@
0没有特判
-
2013-07-21 01:08:37@
应该是10000*2而不是10000^2
-
2009-08-10 21:26:06@
答案有10000^2位
你的数组存不下
- 1