需要構造一種新的矩陣,受到前幾天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 先確定兩矩陣相...