pascal编程:阶乘题目描述用高精度计算出S=1!+2!+3!+…+n!(n≤50) 其中“!”表示阶乘,例如:=5*4*3*2*1.输入格式一个正整数N.输出格式一个正整数S,表示计算结果.样例输入 3 样例输出 9
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/02 23:32:37
pascal编程:阶乘题目描述用高精度计算出S=1!+2!+3!+…+n!(n≤50) 其中“!”表示阶乘,例如:=5*4*3*2*1.输入格式一个正整数N.输出格式一个正整数S,表示计算结果.样例输入 3 样例输出 9
pascal编程:阶乘
题目描述用高精度计算出S=1!+2!+3!+…+n!(n≤50) 其中“!”表示阶乘,例如:=5*4*3*2*1.输入格式一个正整数N.输出格式一个正整数S,表示计算结果.样例输入 3 样例输出 9
pascal编程:阶乘题目描述用高精度计算出S=1!+2!+3!+…+n!(n≤50) 其中“!”表示阶乘,例如:=5*4*3*2*1.输入格式一个正整数N.输出格式一个正整数S,表示计算结果.样例输入 3 样例输出 9
这题需要用到高精度加法以及高精度乘法
【参考程序】
const maxn=100;
var len,n,i,j,h,k:longint;
a,b:array[1..maxn]of longint;
begin
readln(n);
a[1]:=1;
for i:=1 to n do
begin
k:=0;
for j:=1 to maxn do
begin
h:=a[j]*i+k;
a[j]:=h mod 10;
k:=h div 10;
end;
k:=0;
for j:=1 to maxn do
begin
h:=b[j]+a[j]+k;
b[j]:=h mod 10;
k:=h div 10;
end;
end;
len:=maxn;
while b[len]=0 do
len:=len-1;
for j:=len downto 1 do
write(b[j]);
end.