基本算法:

用一个数组为存储计算结果,每一项保存结果中的一位,将结果按从低到高位依次放入数组a[0]....a[n].

 

for i:=2 to n do
begin
    carry:=0;
    for j:=1 to digit do
    begin
      temp:=a[j-1]*i+carry;
      a[j-1]:=temp mod 10;
      carry:=temp div 10;
    end;

    while carry>0 do
    begin
      digit:=digit+1;
      setLength(a,digit);
      a[digit-1]:=carry mod 10;
      carry:=carry div 10;
    end;
end;

 

for k:=digit downto 1 do
    str:=str+inttostr(a[k-1]);

posted on 2008-07-22 12:16  BROTHER  阅读(219)  评论(0)    收藏  举报