第3个回答 2010-08-03
我用了位运算。
program AB;
const
er:array[1..14]of longint=(1,3,7,15,31,63,127,255,511,1023,2047,4095
,8191,16383);
var
n,i,j,k,t,ans,n2:longint;
begin
readln(n); n2:=n;
repeat
n:=n div 2;
inc(t);
until n=0;
n2:=n2 xor er[t];
if n2<>0 then
repeat
if n2 mod 2=1 then inc(ans);
n2:=n2 div 2;
until n2=0;
if t-ans>ans then writeln('A') else writeln('B');
end.
第4个回答 2010-08-04
var
m,i,k,a,b,l,p:longint;
begin
readln(m);
for i:=1 to m do
begin
k:=i;
l:=0;
p:=0;
while k<>0 do
begin
if k mod 2=1 then inc(l) else inc(p);
k:=k div 2;
end;
if l>p then inc(a) else inc(b);
end;
writeln(a,' ',b);
end.
很简单滴~本回答被提问者和网友采纳