阶乘之和解题程序
這題其實就是高精乘
const
?maxn=1000;
var
sum,a:array[0..maxn]of longint;
n:longint;
procedure init;//讀入
begin
? ? readln(n);
? ? a[maxn]:=1;
end;
procedure cf(k:longint);//乘法
var
i,s,g:longint;
begin
? ? g:=0;
? ? for i:=maxn downto 1 do
? ? begin
? ? ? ? s:=a[i]*k+g;
? ? ? ? a[i]:=s mod 10;
? ? ? ? g:=s div 10;
? ? end;
end;
procedure add;//加法
var
g,i,s:longint;
begin
? ? g:=0;
? ? for i:=maxn downto 1 do
? ? begin
? ? ? ? s:=a[i]+sum[i]+g;
? ? ? ? sum[i]:=s mod 10;
? ? ? ? g:=s div 10;
? ? end;
end;
procedure main;
var
i:longint;
begin
? ? for i:=2 to n do
? ? begin
? ? ? ? cf(i);
? ? ? ? add;
? ? end;
end;
procedure print;//輸出
var
i,j:longint;
begin
? ? i:=1;
? ? while (i<=maxn)and(sum[i]=0) do inc(i);
? ? for j:=i to maxn do
? ? write(sum[j]);
end;
begin
? ? sum[maxn]:=1;
? ? init;
? ? main;
? ? print;
end.
轉(zhuǎn)載于:https://www.cnblogs.com/YYC-0304/p/9500257.html
總結(jié)