主题:求解````e=1/1!+1/2!+1/3!+..+1/n!的pascal程序和算法
star3015
[专家分:0] 发布于 2006-08-17 15:55:00
e=1/1!+1/2!+1/3!+..+1/n!
垃圾算法免提
此处n<=10^1000
也就是说n小于10的1000次方
请各位大哥帮帮小弟
回复列表 (共18个回复)
沙发
贺天行宝 [专家分:2300] 发布于 2006-08-17 21:10:00
你不用垃圾算法还能怎么样?你还能怎么样?n怎么那么大?天啊,难道我真的是笨蛋?
板凳
star3015 [专家分:0] 发布于 2006-08-18 10:32:00
也对````但是垃圾算法``过不了几个数据
3 楼
济公二世 [专家分:200] 发布于 2006-08-20 10:19:00
program ee;
var e,n,i,j:integer;
procedure tt(k:integer);
var a:integer;
begin
j:=1;
for a:= k downto 1 do
j:=j*a;
e:=e+j;
end;
begin
readln(n);
e:=0;
for i:= 1 to n do
tt(i); writeln(e);
end.
这是不是垃圾算法?
4 楼
济公二世 [专家分:200] 发布于 2006-08-20 10:27:00
我想就是
5 楼
贺天行宝 [专家分:2300] 发布于 2006-08-20 20:19:00
我看也是
6 楼
tl3shi [专家分:110] 发布于 2006-08-21 21:26:00
var
n,m,x:integer;
e:real;
begin
read(n);
m:=1;x:=0;e:=0;
repeat x:=x+1;
m:=m*x;
e:=e+1/m
until x=n ;
write(e);
end.
初学者,多多指教!!
7 楼
济公二世 [专家分:200] 发布于 2006-08-22 12:50:00
你这个也是垃圾算法呀!!
8 楼
interegg [专家分:80] 发布于 2006-08-27 15:37:00
我是初学的 我发表一下个人意见:
function a(n:integer):abc;{阶乘}
var
i,j,k,x:integer;
begin
k:=1; a[k]:=1;
for i;=2 to n do
begin
x:=0;
for j:=1 to k do
begin
x:=x+a[j]*i ; a[j]:=x mod 10; x:=x div 10;
end;
while x>0 do
begin k:=k+1; a[k]:=x mod 10 ; x:=x div 10; end;
end;
end;
可以直接先算出N!
然后用高精度除法做出各个阶乘,用高精度除法算出1/...... 再用高精度加法 把这些实数相加.
上述算法,不知道好不好,各位一起看看,评价,评价.
9 楼
wshong [专家分:1880] 发布于 2006-08-28 13:01:00
楼主态度明显有问题!
10 楼
ggggqqqqihc [专家分:540] 发布于 2006-09-04 00:03:00
楼主很有意思啊?怎么不说说精度要求呢?你先算算20!?
20!=2432902008176640000对吧?
1/20!我想在计算机里应该等于0了吧,如果不用高精度的话。
我来回复