POJ1995快速冪取模

2021-07-27 09:49:10 字數 614 閱讀 3191

思路:因為就普通的求法把每個的冪都算出來再相加的話,數會特別大,執行速度跟記憶體都會消耗特別大,所以採用了快速冪取法,**中有詳細思路

#include

#include

#include

#include

using namespace std;

//如果不設成全域性變數的話就會出錯,因為這些量的值是在改變的

int ans = 0;//用來儲存結果

int a = 0, b = 0;//定義底數和冪

int c = 0;//定義餘數

//求a的b次方取模後的值

int quick(int a, int b, int c)

b >>= 1;//b右移一位,也就是判斷b的下乙個二進位制位置上的值是1還是0

a = (a*a) % c;//雖然的b的二進位制位上為0不用計算,但是a的值得繼續往上增,因為就算b的對應位置上為0,但是b還是在繼續增加

}return ans;

}int main()

printf("%d\n", ans);//得到一組資料的結果

}//cout << ans<

return 0;

}

poj 1995 快速冪 裸

那麼我們就來說一說快速冪吧 a b 1.如果b是偶數,我們可以記k a2 mod c,那麼求 k b 2 mod c就可以了。2.如果b是奇數,我們也可以記k a2 mod c,那麼求 k b 2 mod c a mod c k b 2 mod c a mod c 就可以了。那麼我們可以得到以下演算...

快速冪 快速冪取模

快速冪的思想在於快速求解高冪指數的冪運算 複雜度為o log2n 與樸素運算相比有很大的改進 接下來給出 其中有詳解 include include using namespace std typedef long long ll ll pow1 int a,int b 最常規的方法 將冪指數轉化為...

快速冪 快速冪取模

求x m 一般方法是 xm x xm 1,這樣需要做m次乘法,未免過慢。加速方法有兩種。1.基於當m為偶數時,xm x2 m 2 當m為奇數時,xm x xm 1。顯然當m為偶數時m會減半,當m為奇數時,下次就是偶數。m可以很快收斂到0.表示冪 2.將m看成二進位制串mkmk 1 m1m0,那麼xm...