1997年分割槽聯賽普級組之三 二進位制…
阿新 • • 發佈:2019-02-03
Description
任何一個正整數都可以用2的冪次方表示。例如:
137=27+23+20
同時約定方次用括號來表示,即ab 可表示為a(b)。
由此可知,137可表示為:
2(7)+2(3)+2(0)
進一步:7= 22+2+20 (21用2表示)
3=2+20
所以最後137可表示為:
2(2(2)+2+2(0))+2(2+2(0))+2(0)
又如:
1315=210 +28 +25 +2+1
所以1315最後可表示為:
2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)
Input
正整數(n≤20000)
Output
符合約定的n的0,2表示(在表示中不能有空格)
Sample Input
Sample Output
用一個遞迴過程,如果k=0就結束,把k變為二進位制,用一個迴圈從二進位制的長度downto到0,如果該位為0就輸出(‘2)’),遞迴迴圈變數,輸出(‘)’)。
程式:
var
n:longint;
procedure dg(k:longint);
var
b:array[0..15]of longint;
i,p:longint;
first:boolean;
begin
if k=0 then begin write(0); exit; end;
p:=-1;
while k>0 do
begin
inc(p);
b[p]:=k mod 2;
k:=k div 2;
end;
first:=true;
for i:=p downto 0 do
begin
if b[i]=1 then
begin
if first then first:=false else write('+');
if i=1 then write(2)
else begin
write('2(');
dg(i);
write(')');
end;
end;
end;
end;
begin
readln(n);
dg(n);
writeln;
end.