快速冪運算 《挑戰程式設計競賽》

2021-08-15 23:19:05 字數 595 閱讀 6569

2018-3-1

這裡我就對數進行說明,並沒有對矩陣進行求解。

求x

^n,其中n是乙個比較大的數

如果用一般的方法的話,我們會直接進行累乘即可,時間複雜度是o(n),但是這個好像並不能滿足我們的要求,我們來分析一下:n的二進位制表示是這樣的,

n=t1*2^k1+t2*2^k2+t3*2^k3…,其中k1,k2,k3…為0,1,2…,t1,t2…只能是0或者1,附上**:

#include

using

namespace

std;

int x,n;

int main()

cout

0;}

我們依次判斷n的二進位制表示的每一位的值,如果是0的話,r不做任何操作,反之,如果是1的話,那麼當前的值要乘上x,有人可能會問,這裡的x是個什麼東西,x每一次都要乘上它本身。比如說n=10110,那麼從左到右依次為:n=1*2^4+0*2^3+1*2^2+1*2^1+0*2^0,那麼第i次迴圈前,x就為x^(2^(i-1)),那麼當第i位為1時,就表示r的值要乘x^(2^(i-1))。

挑戰程式設計解題報告 2 6 3快速冪運算

題意介紹了一種理論即費馬小定理,費馬小定理指出若p是乙個素數,那麼對於任意的整數a a 1 都有ap a mod p 通俗的講就是a的p次方對p取餘結果是a,這道題問的是費馬小定理的逆定理,但是逆定理不一定成立,有少部分資料,不是乙個素數,但是滿足ap a mod p 稱這些數字為基於a的偽素數,實...

《挑戰程式設計競賽》P202 矩陣的冪

題解 矩陣的冪,優化動態規劃 poj2411 mondriaan s dream 題意 給定乙個長寬小於等於 11的矩形,問用1 2的小矩形填滿,有多少種方法。動態規劃 狀態壓縮 題目大意 用1 2的瓷磚拼成4 n的矩形,求方案數。n 1e9 方案數較大,取模 m n這麼大遞推肯定是不行了,所以我們...

挑戰程式設計競賽(3)

給定整數a1,a2,an,判斷是否可以從中選出若干數,使他們的和恰好為k。1 n 20 1e8 ai 1e8 1e8 k 1e8 樣例1input 4 1 2 4 7 13 output yes 13 2 4 7 樣例2input 4 1 2 4 7 15 output no dfs include...