簡單的快速冪演算法

2021-08-10 23:22:12 字數 572 閱讀 8841

簡單的快速冪演算法在資料比較大時能夠防止資料溢位,並且減少運算時間,也是初學者比較容易掌握的一種演算法

但是,我上網搜了一些後發現有的演算法模板存在漏洞,先貼出來讓大家看一下

int powermod(int a, int b, int c)

return ans;

}

大家可以 令a=2 ,b=0 ,c=1代入進去跑一下,就會發現 return ans=1  而實際上的答案應該是0

這個演算法邏輯上是沒錯的,應對大數的時候很好用,但是a=2 ,b=0 ,c=1 這種很簡單的情況卻會wa了

這裡主要是 while(b>0)  和 先將ans定義為1兩個條件使得 上述情況發生了錯誤,因此,我們只需對這種情況進行一下補充就好了

**如下:

#include#includeusing namespace std;

int main()

// if(b==0 && c==1)

// cout<<"0"《其實這個演算法好像還有問題(但我實在沒找到.......)

那個題 reduge 後ac了 .....

簡單的快速冪

題目大意 輸入b,p,k的值,求b p mod k的值。其中b,p,k k為長整型數。輸入輸出格式 輸入格式 三個整數b,p,k.輸出格式 輸出 b p mod k s s為運算結果 例如 輸入樣例 1 2 10 9 輸出樣例 1 2 10 mod 9 7 輸入樣例 2 4523 59 7762 輸...

簡單快速冪

對於求乙個數a的n次冪,我們第一想法就是呼叫包含在標頭檔案cmath或math.h標頭檔案下的pow a,n 函式,為了演算法看起來簡單用int代替大數模版。最簡單的實現就是用乙個迴圈和乙個變數,不斷用變數乘上底數,當然,這樣做的效率並不高o n include using namespace st...

簡單快速冪

本篇文章將介紹關於快速冪的知識,將會對後面的學習有所幫助。p1226傳送門 如何讓計算機計算出 a b bmod p 第一種演算法 樸實無華的 o n 演算法 long long qpow int a,int b,int p return ans 當然,以上解法肯定正確,但當 b geq 10 8 ...