File tree 1 file changed +11
-13
lines changed 1 file changed +11
-13
lines changed Original file line number Diff line number Diff line change @@ -13,21 +13,19 @@ class Solution {
13
13
14
14
private:
15
15
vector<vector<int >> matrixExpo (const vector<vector<int >>& A, int pow) {
16
- if (pow == 0 ) {
17
- vector<vector<int >> I (A.size (), vector<int >(A.size ()));
18
- for (int i = 0 ; i < A.size (); ++i) {
19
- I[i][i] = 1 ;
20
- }
21
- return I;
22
- }
23
- if (pow == 1 ) {
24
- return A;
16
+ vector<vector<int >> result (A.size (), vector<int >(A.size ()));
17
+ vector<vector<int >> A_exp (A);
18
+ for (int i = 0 ; i < A.size (); ++i) {
19
+ result[i][i] = 1 ;
25
20
}
26
- if (pow % 2 == 1 ) {
27
- return matrixMult (matrixExpo (A, pow - 1 ), A);
21
+ while (pow ) {
22
+ if (pow % 2 == 1 ) {
23
+ result = matrixMult (result, A_exp);
24
+ }
25
+ A_exp = matrixMult (A_exp, A_exp);
26
+ pow /= 2 ;
28
27
}
29
- const auto & B = matrixExpo (A, pow / 2 );
30
- return matrixMult (B, B);
28
+ return result;
31
29
}
32
30
33
31
vector<vector<int >> matrixMult (const vector<vector<int >>& A, const vector<vector<int >>& B) {
You can’t perform that action at this time.
0 commit comments