题目描述
任何一个正整数都可以用的幂次方表示。例如
=^+^+^
同时约定方次用括号来表示,即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.