小白回顧 矩陣快速冪講解

2021-09-25 09:06:34 字數 1418 閱讀 2984

part i:首先理解一般的快速冪

為快速求a^b,我們可以採用折半的思想:

1:當b為偶數時,a^b = =a^(b/2) * a^(b/2)

2:當b為奇數時,a^b = =a * (a^(b/2)) * (a^(b/2))

**:

int quick_mi(int a,int b)

a=a*a;//偶數折半

b=b>>1;//位運算折半,其實還可以寫為b=b/2

}return ans;

}

拓展快速冪取模:

1:根據數學公式:a*b%m=(a%m)*(b%m)%m

**:

int quick_mi(int a,int b,int c)

a=a*a%c;//偶數折半

b=b>>1;

}return ans;

}

part ii:矩陣快速冪

1:令mat為一任意矩陣,求mat^n:

2:需要定義乙個結構體,去方便我們呼叫矩陣

**:

struct mati//定義乙個結構體型別,可以定義矩陣

;

3:首先我們需要構造矩陣乘法mat*mat

**:

mati mx(mati a,mati b)//定義矩陣乘法}}

return c;//返回的矩陣即相乘所得

}

4:得到矩陣乘法後,我們模仿快速冪寫法即可

**:

mati mx_mi(mati d,int n)

return re;

}

定義矩陣時候需手動輸入值,對於新定義的矩陣需要初始化

矩陣快速冪模板:

#include#include#includeusing namespace std;

typedef long long ll;

const int mod=1e9+7;

const int n=2;

ll tmp[n][n],res[n][n];

void multi(ll a[n],ll b[n],int n)

}int main()

return 0;

}

矩陣快速冪基礎講解

1.基礎知識儲備篇 n階方陣 n階矩陣 行數m與列數n相同的矩陣,如下圖所示就是乙個4x4的方陣 行矩陣 行向量 只有一行的矩陣,下圖就是乙個行矩陣 列矩陣 列向量 只有一列的矩陣,下圖就是乙個列矩陣 同型矩陣 設先有矩陣a和矩陣b,矩陣a的行數與列數和矩陣b的相同,則矩陣a b是同型矩陣。單位矩陣...

矩陣快速冪 模板與簡單講解

模板 快速冪模板 1 void solve matrix t,long longo 2 1617 o 1 18 19 t mul t,t 20 2122 long long res 0 23 24for int i 0 i d i 25 res res e.a 0 i f d i 1 m 2627 ...

快速冪(矩陣快速冪)

求 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 會超時,這裡引入快速冪來...