poj 1995 快速冪 裸

2021-07-14 11:08:58 字數 979 閱讀 9541

那麼我們就來說一說快速冪吧

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 就可以了。

那麼我們可以得到以下演算法:

int ans = 1;

a = a % c;

if(b%2==1) ans = (ans * a) mod c; //如果是奇數,要多求一步,可以提前算到ans中

k = (a*a) % c; //我們取a2而不是a

for(int i = 1;i<=b/2;i++)

ans = (ans * k) % c;

ans = ans % c;

那麼快速冪演算法就可以由上乙個

int ans = 1;

a = a % c;

while(b>0)

if(b % 2 == 1)

ans = (ans * a) % c;

b = b/2;

a = (a * a) % c;

那麼**就有了

#include

#include

#include

#define ll long long

//by mars_ch

using namespace std;

ll a,b,ans;

int n,m;

ll poww(ll a,ll b)

now=now*now

%n; b>>=1;

}return res;

}int main()

printf("%i64d\n",ans);

} return

0;

}

POJ1995快速冪取模

思路 因為就普通的求法把每個的冪都算出來再相加的話,數會特別大,執行速度跟記憶體都會消耗特別大,所以採用了快速冪取法,中有詳細思路 include include include include using namespace std 如果不設成全域性變數的話就會出錯,因為這些量的值是在改變的 in...

矩陣快速冪 快速冪模板poj3070

poj3070 題意就是通過,矩陣求斐波那契數列數列 如果不知道遞推怎麼來的,或者不知道矩陣快速冪的,可去 看不懂打我 其實矩陣快速冪和快速冪乙個思想來的,都差不多,矩陣快速冪就是把快速冪的乘法運算換成矩陣乘法,再加上一點矩陣知識。快速冪模板 define ll long long int ll q...

POJ 3150 矩陣快速冪

抄的 看不出矩陣快速冪,2b。注意到這是種變換,每次都是n個元素在變來變去,資料範圍很大,這應該反應到時矩陣 根據大神指示,用o n 複雜度儲存空間,由於 a i j a i 1 j 1 o log k n 2 據說可以用傅利葉變換,更快,沒試 include include include inc...