主题:麦森数的优化
zihao1231
[专家分:150] 发布于 2010-04-18 17:14:00
记得做过一个名叫“麦森数”的题目,算的是2^P-1,用一般的高精度速度太慢,听说还有一种五位一进的方法,谁能HELP ME!
回复列表 (共1个回复)
沙发
593170024 [专家分:500] 发布于 2010-09-03 23:07:00
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.
我来回复