正文

pku(1767)(pascal)2005-09-08 04:50:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/ddtme/4507.html

分享到:

Var    n:longint;    a:array[1..30]of integer;    k,i,j,s:integer; Procedure print; var    n1:longint;    i:integer; begin    n1:=0;    for i:=k to 30 do      n1:=n1*2+a[i];    writeln(n1);    halt; end; Begin    readln(n);    k:=31;    while n>0 do      begin        dec(k);        a[k]:=n mod 2;        n:=n div 2;      end;    for i:=30 downto k+1 do      if (a[i]=1)and(a[i-1]=0) then        begin          a[i]:=0;          a[i-1]:=1;          s:=0;          for j:=i+1 to 28 do            if a[j]=1 then inc(s);          for j:=28 downto i+1 do            if odd(j) then a[j]:=0              else                if (28-j)div 2<s then                  a[j]:=1                else                  break;          for s:=i+1 to j do a[s]:=0;          print;        end;    s:=0;    for i:=28 downto k do      if odd(i) then a[i]:=0 else a[i]:=1;    print; End.

阅读(16087) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册