題目描述
任何一個正整數都可以用的幂次方表示。例如
=^+^+^
同時約定方次用括号來表示,即a^b 可表示為a(b)。
由此可知,可表示為:
()+()+()
進一步:= ^++^ (^用表示)
=+^
是以最後可表示為:
(()++())+(+())+()
又如:
=^ +^ +^ ++
是以最後可表示為:
((+())+)+((+()))+(()+())++()
輸入輸出格式
輸入格式:
一個正整數n(n≤)。
輸出格式:
符合約定的n的,表示(在表示中不能有空格)
輸入輸出樣例
輸入樣例#1:
輸出樣例#1:
((+())+)+((+()))+(()+())++()
題解:這道題用遞歸的方法,先求k為的多少次方,然後因為該題隻能輸出,和括号,是以如果m大于等于,則需要遞歸,小于則直接輸出,如果有餘數,則将餘數繼續遞歸。
var n:longint;
procedure mi(k:longint);
var s,m:longint;
begin
m:=;
s:=;
while s*<=k do
begin
s:=s*;
inc(m);
end;
case m of
:write('2(0)');
:write();
:write('2(2)');
else begin write('2(');mi(m);write(')');end;
end;
if k-s<> then
begin
write('+');
mi(k-s);
end;
end;
begin
readln(n);
mi(n);
writeln;
end.