openjudge 2的冪次方表示 c

2021-10-03 09:51:00 字數 1131 閱讀 6517

總時間限制: 1000ms 記憶體限制: 65536kb

描述任何乙個正整數都可以用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)

輸入乙個正整數n(n≤20000)。

輸出一行,符合約定的n的0,2表示(在表示中不能有空格)。

樣例輸入

樣例輸出

2(2(2)+2+2(0))+2(2+2(0))+2(0)

從題目上可以看出,這道題應該採用遞迴的思想,並且應該是採用二進位制來進行處理,詳細**如下:

#include

#include

using

namespace std;

void

two(

int a)

;//呼叫的遞迴函式

intmain()

void

two(

int a)

else

if(a ==1)

else

if(a ==2)

for(

int i =

15; i >=

0; i--

)//由於題目中說n<20000,所以最多不會超過2的15次方,採用位與運算得出二進位制為1的位數

for(

int j =

0; j < b.

size()

; j++)if

(j != b.

size()

-1)//當沒有到b中最後一位時需要加個'+'

cout <<

"+";

}}

open judge 2 尋找中位數

2 尋找中位數檢視提交統計提問總時間限制 1000ms 記憶體限制 65536kb描述在n 1 n 10,000且n為奇數 個數中,找到中位數。輸入第1行 n 第2至n 1行 每行是乙個整數輸出第一行 中位數樣例輸入524 135樣例輸出3 include using namespace std i...

2的冪次方

2的冪次方 noip1998 問題描述 任何乙個正整數都可以用2的冪次方表示。例如 137 2 7 2 3 2 0 同時約定方次用括號來表示,即ab可表示為a b 由此可知,137可表示為 2 7 2 3 2 0 進一步 7 2 2 2 2 0 21用2表示 3 2 2 0 所以最後137可表示為 ...

2的冪次方表示

題目 任何乙個正整數都可以用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 ...