阶乘之和
题目描述
用高精度计算出S=1!+2!+3!+…+n!(n≤50)
其中“!”表示阶乘,例如:5!=5*4*3*2*1。
代码
const
maxn=100;
var
a,b:array[0..maxn] of longint;
i,n:longint;
procedure mul(x:longint);
var
i,g,s:longint;
begin
g:=0;
for i:=maxn downto 1 do
begin
s:=a[i]*x+g;
g:=s div 10;
a[i]:=s mod 10;
end;
end;
procedure add;
var
i,g,s:longint;
begin
g:=0;
for i:=maxn downto 1 do
begin
s:=a[i]+b[i]+g;
g:=s div 10;
b[i]:=s mod 10;
end;
end;
procedure print;
var
i,j:longint;
begin
j:=1;
while a[j]=0 do inc(j);
for i:=j to maxn do
write(b[i]);
end;
begin
readln(n);
a[maxn]:=1;
for i:=1 to n do
begin
mul(i);
add;
end;
print;
end.