回 帖 发 新 帖 刷新版面

主题:帮我找找问题

老师叫我做n的阶乘,开始还以为简单,但后来我却发觉不对劲,请大家帮我找找算法上的问题.
我的程序:

var
   a:array [0..10000] of integer;
   i,c,temp,j,n,k:integer;
begin
readln (n);
a[0]:=1;
a[1]:=1;
for i:=1 to n do
    begin
    temp:=0;
    for j:=1 to a[0]+1 do
        begin
        c:=a[j]*i+temp;
        temp:=c div 10;
        c:=c mod 10;
        a[j]:=c;
        end;
    if a[j]=0 then a[0]:=j-1 else a[0]:=j;
    end;
for k:=a[0] downto 1 do write(a[k]);
end.
老师的要求是求100的阶乘,请帮我改好后再把100!告诉我.

回复列表 (共5个回复)

沙发

整型太小了,不够用

板凳


应该不对吧,我把每一位都存进数组了。

3 楼

用[url=http://upload.programfan.com/upfile/200607011358292.rar]高精度[/url]不就得了,不过要注意时间复杂度(耗时)

4 楼

应该用数组,有很多题目都会超出integer的范围的,所以要用数组

5 楼

一定要他用数组作高精度吗?我更喜欢用string类型。

我来回复

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