天天看點

幂次方-洛谷 1010

題目描述

任何一個正整數都可以用的幂次方表示。例如

    =^+^+^         
同時約定方次用括号來表示,即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.