快速冪的應用

2021-08-29 18:51:40 字數 958 閱讀 4548

這篇部落格歸納總結了快速冪的一些應用,快速冪只是乙個工具,難點不在於實現而在於在合適的時候把它用上。選取了幾個可以使用快速冪解決的問題,由顯而易見到較為複雜難以辨別。

快速冪演算法:

基礎:(a+b)%c=(a%c+b%c)%c           a*b%c=(a%c*b%c)%c;

故:a^b=a^(2^x1+2^x2+..........+2^xn)     若b為奇數,則xn為0,若b為偶數,則xn為1

將b轉化為2的次方和後可將複雜度由o(b)降為o(log2b)

快速冪**模板:

int quick_pow(int a,int b)

return ans;

}

第一題:杭電1061 快速冪模基礎板題

分析:求n^n的最後一位數字。直接算太大,於是只算最後一位數字n%10的n次方,在每一步取模即可

#include using namespace std;

int quick_pow(int a,int b)

return ans;

}int main()

}\sum _^c(n,i)*i" class="mathcode" src=""/>這道題並不容易察覺出是快速冪。由於n的範圍為10^9,如果依次計算求和肯定超時。根據組合數公式可得到該式可以轉化為n*2^(n-1),於是可利用快速冪取模

#include using namespace std;

typedef long long ll;

const int mod = 1000000007;

ll quick_pow(ll a,ll b)

return ans;

}int main()

{ ll n;

cin>>n;

cout《第三題:後續繼續更

矩陣 快速冪及應用

一 快速冪部分 求a b,如下。include using namespace std int quickpow int x,int y return ans int main 其中 位移運算,就是把y轉換為 二進位制數 整體向右移一位,高位補零,最低位消失,通常右移一位就等價於y除以2再賦給b。可...

三 矩陣快速冪應用

這個同學寫的太好了,於是我又厚顏無恥的借鑑了 例一 poj 3070 題目 斐波那契數列f n 給乙個n,求f n 10000,n 1e9 這題是可以用fibo的迴圈節去做的,不過這裡不講,反正是水題 矩陣快速冪是用來求解遞推式的,所以第一步先要列出遞推式 f n f n 1 f n 2 第二步是建...

快速冪 模板及應用

一.快速冪模板 int powermod int a,int b,int mod returnt a b mod view code 參考 鏈結1 鏈結2二.取模運算的性質 1 a b c a c b c c 2 ab c a c b c c 三.相關題目 n oip2013tg d1t1轉圈遊戲 ...