普及練習場 分治演算法 P1010 冪次方

2021-10-03 08:23:39 字數 942 閱讀 4333

題目描述

任何乙個正整數都可以用 2 的冪次方表示。例如

137=27+23+2^0

同時約定方次用括號來表示,即 a^b 可表示為 a(b)。

由此可知, 137 可表示為:2(7)+2(3)+2(0)

進一步:7=22+2+20(2^1用2表示),並且 3=2+2^0

所以最後 137 可表示為:2(2(2)+2+2(0))+2(2+2(0))+2(0)

又如:1315=2^ +2^8 +2^5 +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 表示(在表示中不能有空格)

輸入輸出樣例

輸入樣例#1:

輸出樣例#1:

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

————————————————

思路:遞迴/分治,因為分解出的指數還要繼續分解,是重複的但規模更小的問題

關於求log_2 xlog 2​ x,暴力列舉。

#include

#include

#include

using

namespace std;

int a;

voidm(

int x)

x -=pow(2

,i);

//繼續迴圈分解餘下的

if(x!=

0) cout<<

"+";

//若此x還沒分解完,則後面還有項,所以輸出乙個+號}}

}int

main()

P1010 冪次方 (遞迴 分治)

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

普及練習場 分治演算法 逆序對

題目鏈結 看到這個資料量,你就不應該想著去寫個暴力。我原來已經寫過一遍這個題目了,並且還記得是歸併排序來做,但是有點記不得是怎麼推導出思路的了,因此決定重新推導一遍。我找到了原來的ppt,並且加一點自己的理解吧。一開始的時候應該是1 2 但是1 被分解成更小的1 和更小的2 當只有兩個數的時候,就只...

普及練習場 高精度演算法 P1255 數樓梯

題目描述 樓梯有n階,上樓可以一步上一階,也可以一步上二階。編乙個程式,計算共有多少種不同的走法。輸入輸出格式 輸入格式 乙個數字,樓梯數。輸出格式 走的方式幾種。輸入輸出樣例 輸入樣例 1 輸出樣例 1 思路 高精度的 和 斐波那契數列 組合 f i f i 1 f i 2 f 0 f 1 1 i...