Angel_Virus 2016-10-17 05:30:13
点我顶贴
收藏
删除
这题容易忽略的一点是:当a<0 或 a>=2^26时是NONE!接着只要转换a为2进制,再打印出即可。关于末尾空格,只需要一个布尔值f判断就行,记住每个数开始时要把数据回归。
var n,a,k,i,j:longint;
r:boolean;
b:string;
f:array[0..31] of integer;
begin
readln(n);
for i:=1 to n do begin
k:=0;r:=false;for j:=0 to 31 do f[j]:=0;
readln(a);
if (a>0) and (a<67108864) then begin
repeat
f[k]:=a mod 2;
a:=a div 2;
k:=k+1;
until a=0;
for j:=0 to 31 do begin
if (r=false) and (f[j]=1) then begin
b:=chr(j+65);
write(b);
r:=true;
end
else if f[j]=1 then begin
b:=chr(j+65);
write(' ',b);
end;
end;
end
else write('None');
writeln;
end;
end.