讨论 / 怎么回事?
wyl8899 2010-08-08 00:55:00
点我顶贴 收藏 删除
http://www.rqnoj.cn/Status_Show.asp?SID=277251

评测结果是这个。

ms都没错,输出结尾的空行我也留意了。

代码如下:

program masons;

var p:longint;

a,b:array[1..501]of longint;

procedure init;

begin

readln(p);

end;

procedure two(x:longint);

var l,i,j:integer;

begin

if x=1 then begin a[1]:=2; exit; end;

two(x div 2);

fillchar(b,sizeof(b),0);

l:=500;

while a[l]=0 do dec(l);

for i:=1 to l do

begin

for j:=1 to l do

inc(b[i+j-1],a[i]*a[j]);

j:=1;

while j<=500 do

begin

inc(b[j+1],b[j] div 10);

b[j]:=b[j] mod 10;

inc(j);

end;

end;

if x mod 2=1 then

begin

l:=500;

while b[l]=0 do dec(l);

for i:=1 to l do

inc(b[i],b[i]);

i:=1;

for i:=1 to l do

begin

inc(b[i+1],b[i] div 10);

b[i]:=b[i] mod 10;

end;

end;

a:=b;

end;

procedure outs;

var i:integer;

begin

writeln(trunc(p*ln(2)/ln(10))+1);

dec(a[1]);

for i:=500 downto 2 do

begin

write(a[i]);

if (i-1) mod 50=0 then writeln;

end;

write(a[1]);

end;

begin

init;

two(p);

outs;

end.

#1 yangminhao049@2010-08-08 00:55:00
回复 删除
输出不用50位换行的~~
查看更多回复
提交回复