高精度阶乘(pascal)
来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:综合作业 时间:2024/06/16 16:05:13
高精度阶乘(pascal)
【题目】数学上定义:
n!=1×2×3×...×(n-1)×n (N>0)
0!=1
若用integer型数据表示阶乘,最多可到7!,用Longint类型也只能到12!
要求输入正整数n,求 n! 的精确表示
【题目】数学上定义:
n!=1×2×3×...×(n-1)×n (N>0)
0!=1
若用integer型数据表示阶乘,最多可到7!,用Longint类型也只能到12!
要求输入正整数n,求 n! 的精确表示
![高精度阶乘(pascal)](/uploads/image/z/3882609-9-9.jpg?t=%E9%AB%98%E7%B2%BE%E5%BA%A6%E9%98%B6%E4%B9%98%EF%BC%88pascal%EF%BC%89)
var a:array[1..10000] of integer;
b,c,d,t,x:integer;
begin
readln (x);
if (x=10 then if (t=d) then d:=d+1; {假如最后一位乘时有}
{进位,则总位数加1}
a[t]:=a[t] mod 10;
inc (t); {数组下一位}
until (t>d); {直到乘完数组的每一位数字}
end;
write (x,'!=');
for t:=d downto 1 do write (a[t]); {输出}
end.
b,c,d,t,x:integer;
begin
readln (x);
if (x=10 then if (t=d) then d:=d+1; {假如最后一位乘时有}
{进位,则总位数加1}
a[t]:=a[t] mod 10;
inc (t); {数组下一位}
until (t>d); {直到乘完数组的每一位数字}
end;
write (x,'!=');
for t:=d downto 1 do write (a[t]); {输出}
end.