十九 高效率的冪運算

2021-10-04 16:43:02 字數 720 閱讀 3091

我們想要處理乙個整數的冪

long

intpow

(long

int x,

unsigned

int n)

計算x^n,可以使用n - 1次乘法自乘,用遞迴演算法最好。

如果n是偶數則x^n = x ^n/2 * x^n/2;

如果n是奇數,則x的n次冪 = x^(n - 1)/ 2 * x^(n - 1)/ 2 * x;

例如,為了計算x^62,演算法將如下進行,它只用到9次乘法:

x^3 = (x^2)*x , x^7 = (x^3) ^ 2 *x

x^15 = (x^7) ^2 x , x^31 = (x^15) ^ 2x

x^62 = (x^15) ^ 2 *x

顯然,所需要的乘法次數最多是2logn,因為把問題對分最多需要兩次乘法(如果n是奇數)。

(注: 因為由取冪運算得到的數一般都是相當大的,因此,我們只能在假設一台機器能夠儲存這樣一些大整數(或有乙個編譯程式能夠模擬它)的情況下進行分析。)

完整**:

#include

long

intpow

(long

int x,

unsigned

int n)

intmain()

高效率秘籍

高效率秘籍1 能量管理 假如今天透支身體數小時,下週你可能要為此償還更多的時間。良好的能量管理有兩步 1 增加你的能量儲備。2 將你的日程表由線性的改為迴圈式的。能量儲備 1 每週有3 5次運動嗎?如果你的回答為否,你正在削弱你的潛在能量水平,除非你的醫生不讓你參加運動,否則最少每天要抽出40分鐘來...

高效率生活

如何高效率生活 我們經常會想,為什麼我天天很努力的工作可是工作還是幹不完,如何才能高效率的工作和學習呢?我想這裡有過一些想法和經驗 經驗2 完成乙個事情再休息。因為人腦和電腦很像,乙個東西只有有了結果之後,再次回想時候才能有用,每個東西都要歸根到乙個節點上,乙個完結的點之後才能由這個點拓展開來,就和...

遞迴 高效率求2的n次冪

思路 使用翻一番的技巧。比如,2的9次 則 1 2 2 2 2 4 4 4 16 16 16 指數 1 2 4 8 能翻倍的情況下 能翻 while ex 1 不能翻倍的情況下 不能翻 則把差值作為指數遞迴計算。當差值為0時,就說明到頭了,只剩最後乙個數字。return 1 乘數字本身即可。retu...