冪次方(遞迴思想 思維題)

2021-09-25 15:42:06 字數 649 閱讀 7855

這道題是我第二次遇見了,我第一次遇見的時候寫不來,現在終於搞懂了;

首先任何數被分解後他們都能被這幾種最基本的形式所組合出來:

這樣就可以這樣想了,我找到第乙個t,使得pow(2,t)>n;然後我再去分解這個t-1(因為大於n所以只需要找到乙個小的t-1就行了)

,然後除了t-1外,如果還有餘數那麼就分解它的另乙個數(n-pow(2,t-1));比如可以這樣理解:

就是這個意思,然後在遞迴的時候就注意括號和+號就可以了;

#includeusing namespace std;

int fun(int n)else

}}int main()

bitset 遞迴 冪次方

洛谷p1010冪次方 搜尋x的步驟 判斷當前數x是否小於等於2 1 如果小於等於2 則當前數x無需再分解 判斷x是否為1 1 如果不是 輸出x 2 如果是1 不輸出 返回 2 如果x大於2 則當前數x不能直接輸出 而需要繼續分解 用bitset對當前數x進行二進位制分解為p 因為題目範圍n 2000...

2的冪次方(遞迴)

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

2的冪次方 遞迴

description 任何乙個正整數都可以用2的冪次方表示。例如137 27 23 2 0,由此可知,137可表示為 2 7 2 3 2 0 而7又可以表示為 2 2 2 2 0 3可以表示為 2 2 0 因此137最終表示為 2 2 2 2 2 0 2 2 2 0 2 0 input 乙個正整數...