讨论 / 经过本人手算研究的一点成果
阿修罗 2009-01-20 05:29:00
点我顶贴 收藏 删除
AC程序如下....

var

s,n,m,a,k:int64;

begin

readln(n);

k:=2*n+1;

a:=2;

s:=1;

while a<>1 do

begin

a:=a*2;

s:=s+1;

if a>k then

a:=a-k;

end;

write(s);

end.

#1 caoyuan9642@2008-06-13 07:43:00
回复 删除
怎么回事啊..

#2 caoyuan9642@2008-06-27 20:53:00
回复 删除
是不是

trunc(log (2n+1)-1 ?

2

#3 fjxmlhx@2008-06-27 20:58:00
回复 删除
楼上..明显不是
#4 xiaokeke@2008-07-04 21:14:00
回复 删除
同意

我写的跟LZ差不多

var i,j,m,n:longint;

procedure try;

var j:longint;

begin

i:=2*I;

IF I > 2*N THEN

BEGIN

I:=I DIV 2;

I:=I - (2*N-I+1);

END;

end;

begin

readln(n);

M:=0;

I:=1;

repeat

try;

inc(m);

until I=1;

writeln(m);

end.

#5 CODE-GEASS@2009-01-20 05:29:00
回复 删除
感谢启发~2*N+1!
查看更多回复
提交回复