回 帖 发 新 帖 刷新版面

主题:麦森数的优化

记得做过一个名叫“麦森数”的题目,算的是2^P-1,用一般的高精度速度太慢,听说还有一种五位一进的方法,谁能HELP ME!

回复列表 (共1个回复)

沙发

program gaojingdu2ncf(input,output);
const m=500;
var a:array [1..m] of integer;
    f,i,j,c,n,k:longint;
    y:string;
begin
  readln(n);
  f:=trunc(n*ln(2)/ln(10))+1;
  a[1]:=1;
  k:=0;
  str(power(2,29),y);
  for i:=length(y) downto 1 do
  begin
    k:=k+1;
    a[k]:=ord(y[i])-48;
  end;
  c:=0;
  for j:=1 to n-29 do
    for i:=1 to f do
    begin
      if i>500 then continue;
      a[i]:=a[i]*2+c;
      c:=a[i] div 10;
      a[i]:=a[i] mod 10;
    end;
  writeln(f);
  a[1]:=a[1]-1;
  if f<=500 then
  begin
    j:=(500-f) mod 50;
    for i:=1 to (500-f) do
    begin
      write('0');
      if i mod 50=0 then writeln;
    end;
    for i:=f downto 1 do
    begin
      write(a[i]);
      j:=j+1;
      if j mod 50=0 then writeln;
    end;
  end
              else
  for i:=500 downto 1 do
  begin
    write(a[i]);
    if i mod 50=0 then writeln;
  end;
end.

我来回复

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