主题:[求助]一道简单的题
风之落叶
[专家分:40] 发布于 2007-04-08 13:57:00
求n的阶层(n<100)
例:
5!=5×4×3×2×1
谢谢啦!
回复列表 (共25个回复)
沙发
bigchen [专家分:1940] 发布于 2007-04-09 12:23:00
var
s,i,n:longint;
begin
readln(n);s:=1;
for i:=2 to n do s:=s*i;
writeln(s);
end.
板凳
angwuy [专家分:2280] 发布于 2007-04-10 19:04:00
建议用高精度
3 楼
finallibra [专家分:0] 发布于 2007-04-10 19:36:00
何谓“高精度”?
4 楼
风之落叶 [专家分:40] 发布于 2007-04-14 13:20:00
bigchen超时是肯定的!
5 楼
风之落叶 [专家分:40] 发布于 2007-04-14 13:21:00
同意angwuy
6 楼
银翼魔术师 [专家分:0] 发布于 2007-05-27 08:32:00
var
n,i,j:longint;
begin
readln(n);
j:=1;
for i:=1 to n do
begin
j:=j*i;
end;
write(j);
end.
7 楼
逍遥兔. [专家分:0] 发布于 2007-07-12 19:25:00
var
n,i,j:longint;
begin
readln(n);
j:=1;
for i:=1 to n do
begin
j:=j*i;
end;
write(j);
end.
8 楼
dorremon1992 [专家分:870] 发布于 2007-07-12 21:22:00
所谓的 高精度 就是不使用系统自带的integer,long等整型
自己使用数组来模拟一个数据类型
这样可以使数据的长度很夸张
像题目中的100的阶乘,可以用个20,30位的数组来模拟
关键就是自己需要对数组的乘法进行特殊编程
9 楼
游侠UFO [专家分:1200] 发布于 2007-07-12 23:31:00
[quote]何谓“高精度”?[/quote]
教材上有,可以自己翻翻。
10 楼
007bond [专家分:540] 发布于 2007-07-13 10:27:00
var a,i,j,p,l,w,s:integer;b,c,q:string;
n,h,k:array[1..10000] of integer;
begin
readln(a);
b:='1';
for i:=2 to a do
begin
str(i,c);
for j:=1 to length(c) do q:=copy(c,j,1);val(q,h[j],p);
for j:=1 to length(b) do q:=copy(b,j,1);val(q,k[j],p);
for j:=1 to length(c) do
begin
for l:=1 to length(b) do
begin
w:=j+l-1;s:=h[j]*k[l];
n[w]:=n[w]+(s mod 10);
n[w+1]:=n[w+1]+(s div 10)+(n[w] div 10);
n[w]:=n[w] mod 10;
end;
end;b:='';
if n[w+1]>0 then w:=w+1;
for j:=w downto 1 do str(n[j],q);b:=b+q;n[j]:=0;h[j]:=0;k[j]:=0;
end;
writeln(b);
end.
我来回复