pascal编程:阶乘
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/21 09:11:13
pascal编程:阶乘
题目描述用高精度计算出S=1!+2!+3!+…+n!(n≤50) 其中“!”表示阶乘,例如:=5*4*3*2*1.输入格式一个正整数N.输出格式一个正整数S,表示计算结果.样例输入 3 样例输出 9
题目描述用高精度计算出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.