回 帖 发 新 帖 刷新版面

主题:[讨论]n!的位数

求n!的位数,n》1000000

回复列表 (共15个回复)

11 楼

用高精度
var
  t:array[0..10000] of integer;
  i,j,n,lt:longint;
begin
  readln(n);
  t[1]:=1;lt:=1;
  for i:=2 to n do
    begin
      for j:=1 to lt do
        begin
          t[j]:=t[j]*i;
          t[j]:=t[j]+t[j-1] div 10;
          t[j-1]:=t[j-1] mod 10;
        end;
      while t[lt]>9 do
        begin
          lt:=lt+1;
          t[lt]:=t[lt]+t[lt-1] div 10;
          t[lt-1]:=t[lt-1] mod 10;
        end;
    end;
  writeln(lt);
end.
还可以优化,自己想想吧,

12 楼

哥哥,你曾给我解释解释过freepascal的文件路径设置,我很感谢你,我觉得这题应用高精度计算出一位打一位,我试过,用酷睿2双核,一秒可以搞定

13 楼

数不能定义成double型的,它效率很低,绝对超时

14 楼

知道了 ,谢谢,明天比赛
 祝你有好运

15 楼

友谊帮顶
俺不会

我来回复

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