AcWing 225 矩陣冪求和

2022-05-11 05:14:37 字數 1347 閱讀 7738

需要構造一種新的矩陣,受到前幾天xy的求和的啟發,但是還是不知道矩陣的求和怎麼搞。事實上矩陣的求和是一樣的。

構造乙個矩陣:其中e是單位矩陣,o是零矩陣,那麼這個東西轉移n次就得到需要的sn,而a在此過程中自動轉移。

\[\left[

\begin

s_1 \\

a^2 \\

\end

\right]

=\left[

\begin

e&e \\

o&a \\

\end

\right]

*\left[

\begin

s_0 \\

a^1 \\

\end

\right]

\]

#includeusing namespace std;

typedef long long ll;

int mod;

struct matrix30

void init()

void sete()

matrix30 operator+(const matrix30 &m)const

for(int i = 0; i < maxn; ++i)

return tmp;

}matrix30 operator*(const matrix30 &m)const

}for(int i = 0; i < maxn; ++i)

return tmp;

}void show(int n)

}} e, o, a;

struct matrix2

void init()

void sete()

matrix2 operator*(const matrix2 &m)const

return tmp;

}};matrix2 qpow(matrix2 x, int n)

return res;

}int main()

}matrix2 nxt;

nxt.ma[0][0] = e;

nxt.ma[0][1] = e;

nxt.ma[1][0] = o;

nxt.ma[1][1] = a;

matrix2 i;

i.ma[0][0] = o;

i.ma[0][1] = o;

i.ma[1][0] = a;

i.ma[1][1] = o;

matrix2 res = qpow(nxt, k);

res = res * i;

res.ma[0][0].show(n);

}

矩陣快速求冪

今天看 劍指offer 看到乙個遞推關係 f n f n 1 f n 2 書中提出了一種簡單的演算法,也就是矩陣乘法 如果是n次方,那麼時間複雜度應該是o n 那麼有沒有一種更快的演算法呢?快速冪演算法能讓時間複雜度降至o logn 怎麼來做快速冪演算法呢?我們首先先想乙個簡單的,乙個數字a,求他的...

矩陣快速求冪

在只使用標準庫的情況下,c 沒有現成的處理矩陣的標準庫,所以矩陣的運算就比較麻煩,尤其是矩陣的乘法 加減法都可以對應位置做加減,乘法的運算相對比較複雜,冪運算又會帶來的大量的乘法運算,所以這裡記錄一種 矩陣快速求冪的方法。這種方法可以將運算降低至指數次,原理是這樣的 1.矩陣a的m次方,先把m分解成...

演算法筆記 矩陣求冪

1.矩陣求冪 include 如果把pow寫在main函式下面的話,需要加一句函式呼叫 void pow int result 20 20 int a 20 20 int n 注意函式的寫法 int i,j,k int c 20 20 用於儲存中間結果 for i 0 i題目分析 1 先確定兩矩陣相...