/ Vijos / 讨论 / 问答 /

高精度超时问题

var

st1,st2:ansistring;

lena,lenb,lenc,i,j:longint;

a,b,c:packed array[1..10010]of integer;

begin

readln(st1);

readln(st2);

lena:=length(st1);

lenb:=length(st2);

for i:=1 to lena do a[lena-i+1]:=ord(st1[i])-48;

for i:=1 to lenb do b[lenb-i+1]:=ord(st2[i])-48;

for i:=1 to lena do

for j:=1 to lenb do

begin

c:=c+a[i]*b[j];

c:=c+c div 10;

c:=c mod 10;

end;

lenc:=lena+lenb;

while (c[lenc]=0)and(lenc>1) do dec(lenc);

for i:=lenc downto 1 do write(c[i]);;

end.

这个程序可以得75分,最后一个点超时,请问应该如何修改???

3 条评论

  • @ 2010-04-06 20:56:15

    用longint压4位时间复杂度可以压缩为1/16……

  • @ 2010-04-06 14:15:08

    用四位的高精吧…

  • @ 2010-04-06 12:26:45

    四位并一位

  • 1