日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【矩阵乘法】Matrix Power Series(poj 3233)

發布時間:2023/12/3 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【矩阵乘法】Matrix Power Series(poj 3233) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Matrix Power Series

poj 3233

題目大意

給你一個矩陣A,讓你求S=A+A2+A3+…+AkS = A + A^2 + A^3 + … + A^kS=A+A2+A3++Ak

輸入樣例

2 2 4 0 1 1 1

輸出樣例

1 2 2 3

n?30,k?109,m<104,a∈A,a?32768n \leqslant 30,k \leqslant 10^9,m < 10^4,a\in A,a \leqslant32768n?30,k?109,m<104,aA,a?32768

解題思路

如果直接計算k遍會超時
看到矩陣我們考率矩陣乘法(doge)
我們設矩陣[Ai?1Si?2]\begin{bmatrix}A^{i-1} & S_{i - 2}\end{bmatrix}[Ai?1?Si?2??](A,S均為n?nn*nn?n的矩陣,Si=A+A1+A2…+AiS_i=A+A^1+A^2…+A^iSi?=A+A1+A2+Ai
那么有[Aisi?1]=[Ai?1si?2]×[A101]\begin{bmatrix}A^i & s_{i-1}\end{bmatrix}=\begin{bmatrix}A^{i-1} & s_{i-2}\end{bmatrix} \times \begin{bmatrix}A & 1\\ 0 & 1\end{bmatrix}[Ai?si?1??]=[Ai?1?si?2??]×[A0?11?]
注:1為單位矩陣
這樣就可以快速冪了

代碼

#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define ll long long #define wyc mod ll n, k, mod; struct matrix {ll n, m, a[100][100];matrix operator *(const matrix &b) const//矩陣乘法{matrix c;c.n = n;c.m = b.m;for (ll i = 1; i <= c.n; ++i)for (ll j = 1; j <= c.m; ++j)c.a[i][j] = 0;for (ll i = 1; i <= n; ++i)for (ll k = 1; k <= m; ++k)for (ll j = 1; j <= c.m; ++j)c.a[i][j] = (c.a[i][j] + a[i][k] * b.a[k][j] % wyc) % wyc;return c;} }A, B; void Counting(ll g)//快速冪 {while(g){if (g & 1) A = A * B;B = B * B;g >>= 1; } } int main() {scanf("%lld%lld%lld", &n, &k, &mod);A.n = n;A.m = n * 2;B.n = n * 2;B.m = n * 2; for (ll i = 1; i <= n; ++i)for (ll j = 1; j <= n; ++j){scanf("%lld", &A.a[i][j]);B.a[i][j] = A.a[i][j];}for (ll i = 1; i <= n; ++i)B.a[i][i + n] = B.a[i + n][i + n] = 1;//建初始矩陣Counting(k);for (ll i = 1; i <= n; ++i){for (ll j = 1; j <= n; ++j)printf("%lld ", A.a[i][j + n] % wyc);putchar(10);}return 0; }

總結

以上是生活随笔為你收集整理的【矩阵乘法】Matrix Power Series(poj 3233)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。