pascal语言中如何完成下列题目:给定n(n<=1000),求1!+2!+3!+….+n!

来源:百度知道 编辑:UC知道 时间:2024/06/30 17:45:24
给定n(n<=1000),求1!+2!+3!+….+n!
顺便求一个对pascal语言熟悉的大虾,愿拜为师。愿者留qq。
要带高精的

var a,b,c:array[1..5000]of longint;
w,w1,w2,i,n,j:longint;
procedure as;
var i,x:longint;
begin
x:=0;
if w>w1 then w2:=w
else w2:=w1;
for i:=1 to w2 do
begin
c[i]:=a[i]+b[i]+x;
x:=c[i] div 10;
c[i]:=c[i] mod 10;
end;
while x>0 do begin
inc(w2);
c[w2]:=x mod 10;
x:=x div 10;
end;
end;
procedure asd(k:longint);
var i,x:longint;
begin
x:=0;
for i:=1 to w do begin
a[i]:=a[i]*k+x;
x:=a[i] div 10;
a[i]:=a[i] mod 10;
end;
while x>0 do begin
inc(w);
a[w]:=x mod 10;
x:=x div 10;
end;
end;
begin
readln(n);
w:=1;
a[1]:=1;
w1:=1;
b[1]:=2;
for i:=3 to n do begin
as;
b:=c;
w:=1;
a[1]:=1;
for j:=1 to i do asd(j);
end;
as