快速冪(整數快速冪 矩陣快速冪)

2021-08-23 12:05:17 字數 981 閱讀 4113

1、整數快速冪

例如求x^8  就是x*x*x*x*x*x*x*x

正常的運算方式是,x的值乙個個往上乘上去,乘法運算執行7次

(x  x)(x x) (x x)(x x)

也可以採用這種運算方式,先進行乘法得到x^2再對x^2進行三次乘法。這種運算要明顯比第一種情況要快

所以對於整數快速冪,也是結合了這種思想

(x^m)*(x^n)=x^(m+n)

x^19=(x^16)(x^2)(x^1)

//整數快速冪

int quickpow(int x,int n)

res = res*res;

n = n>>1;

}return ans;

}

2、矩陣快速冪

struct matrix  //結構體,矩陣型別

ans,res;

//計算矩陣乘法的函式,引數是矩陣a,矩陣b和乙個n,代表這兩個矩陣是幾階方陣

maxtrix mul(maxtrix a,maxtrix b,int n)

//快速冪演算法,求矩陣res的n次冪

void quickpower(int n,int n)

while(n)

}

3.示例:斐波那契數列 poj3070

f[n]=f[n-1]+f[n-2]

f[0]=0,f[1]=1;

斐波那契數列是乙個遞推式求出來的

第n+1項由第n項和第n-1項遞推而來

因此可以用矩陣表示:

#includeusing namespace std;

#define mod 10000

struct matrix

void init()

return ans;}

int main()

}return 0;

}

快速冪計算(整數快速冪 矩陣快速冪)

快速冪計算 樸素演算法實現 1 ll get pow ll x,ll n 這裡的n要求不小於0,如果n小於0則令n n,並且最終返回1.0 ans即可 29 return ans 10 快速冪演算法 原理 二分 假設我們現在要計算pow x,n 那麼有當n為偶數時pow x,n pow x x,n ...

快速冪 普通快速冪 矩陣快速冪

題意 n個人排隊,f表示女,m表示男,包含子串 fmf 和 fff 的序列為o佇列,否則為e佇列,有多少個序列為e佇列。分析 矩陣快速冪入門題。下面引用巨巨解釋 用f n 表示n個人滿足條件的結果,那麼如果最後乙個人是m的話,那麼前n 1個滿足條件即可,就是f n 1 如果最後乙個是f那麼這個還無法...

快速冪(矩陣快速冪)

求 3 0 3 1 3 n mod 1000000007 input 輸入乙個數n 0 n 10 9 output 輸出 計算結果 sample input 3sample output 40 分析 利用等比數列的求和公式得所求和是 3 n 1 1 2,如果暴力求3 n 1 會超時,這裡引入快速冪來...