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