8758 2的冪次方表示

2021-09-30 18:35:56 字數 1360 閱讀 5617

總時間限制:

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表示(在表示中不能有空格)。

樣例輸入

137
樣例輸出

2(2(2)+2+2(0))+2(2+2(0))+2(0)
解題思路:

乙個數,怎麼遞迴求呢?

你先求小於等於這個數最大的 2^x次方 用n 減去  2^x此法,繼續用這個思路求,

比如說137 = 2 (7) + 2(3) + 2(0)

然後 7 也可以用同樣的方式去求。

3 也一樣,

這樣就想到了遞迴,

#include#includeusing namespace std;

string dfs(int n)

m /= 2;

e--;

string h;

if(m == 2)

h += "2";

else

h += "2(" + dfs(e) + ")";

if(m == n)

return h;

h += "+" + dfs(n-m);

return h;

}int main()

另一種遞迴

#include#includeusing namespace std;

void dfs(int n)

if(n == 2)

int m = 1;

int e = 0;

while(m <= n)

m /= 2;

e--;

if(e == 1)

cout << "2" ;

else

if( n - m == 0)

return;

else

}int main()

(遞迴)8758 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 0 又...

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 ...

1208 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...