讓我們先來思考乙個問題:7的10次方,怎樣算比較快?
方法1:最樸素的想法,7*7=49,49*7=343,... 一步一步算,共進行了9次乘法。
這樣算無疑太慢了,尤其對計算機的cpu而言,每次運算只乘上乙個個位數,無疑太屈才了。這時我們想到,也許可以拆分問題。
方法2:先算7的5次方,即7*7*7*7*7,再算它的平方,共進行了5次乘法。
但這並不是最優解,因為對於「7的5次方」,我們仍然可以拆分問題。
方法3:先算7*7得49,則7的5次方為49*49*7,再算它的平方,共進行了4次乘法。
模仿這樣的過程,我們得到乙個在 o(logn) 時間內計算出冪的演算法,也就是快速冪。
輸入:三個不超過 10000 的正整數 x,p,m。
輸出:x^p mod m的值。
#includeusing namespace std;
int x, p, m, i, result;
int main()
cout << result << endl;
return 0;
}
水篇快速冪
一,快速冪 取冪指數的二進位制,從低到高尋找,當前位 1時,加上當前位對應的值,複雜度順利降到o logn b 1000001101 二進位制 a b a 0 a 2 a 3 a 9 o log2 b typedef long long ll ll qpow ll a,ll b a b return...
C 演算法之 快速冪
快速冪 quick power,以下簡稱qpw 是math.h或cmath裡的內建函式pow的公升級版 只不過是比pow快了一些 qpw函式需要實現以下的條件 宣告ans變數,賦值為1 如果指數為奇數,ans乘上原數 原數 原數的平方,指數除以2 如果b 0,返回ans,否則重複執行2,3步 注意取...
演算法提高快速冪(快速冪演算法詳解)
問題描述 給定a,b,p,求 a b mod p。輸入格式 輸入共一行。第一行有三個數,n,m,p。輸出格式 輸出共一行,表示所求。樣例輸入 2 5 3 樣例輸出 資料規模和約定 共10組資料 對100 的資料,a,b為long long範圍內的非負整數,p為int內的非負整數。所謂的快速冪,實際上...