回 帖 发 新 帖 刷新版面

主题:求解````e=1/1!+1/2!+1/3!+..+1/n!的pascal程序和算法

e=1/1!+1/2!+1/3!+..+1/n!
     垃圾算法免提
   此处n<=10^1000
       也就是说n小于10的1000次方
  请各位大哥帮帮小弟

回复列表 (共18个回复)

沙发

你不用垃圾算法还能怎么样?你还能怎么样?n怎么那么大?天啊,难道我真的是笨蛋?

板凳


也对````但是垃圾算法``过不了几个数据

3 楼

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 楼

我想就是

5 楼

我看也是

6 楼

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 楼

你这个也是垃圾算法呀!!

8 楼

我是初学的 我发表一下个人意见:
   
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 楼

楼主态度明显有问题!

10 楼

楼主很有意思啊?怎么不说说精度要求呢?你先算算20!?

20!=2432902008176640000对吧?

1/20!我想在计算机里应该等于0了吧,如果不用高精度的话。

我来回复

您尚未登录,请登录后再回复。点此登录或注册