求逆矩陣 模板 洛谷P4783

2021-09-26 07:45:44 字數 1199 閱讀 8253

模板題目

輸入乙個n*n的矩陣,若可逆,求其逆矩陣。

#include

using

namespace std;

const

int maxn =

405;

const

int mod=

1e9+7;

int n;

struct matrix

int*

operator

(int x)

void

swap

(int x,

int y)

//交換某兩行

void

mul(

int x,

int k)

//將某一行的所有元素乘上k

voidmd(

int x,

int y,

int k)

//將某一行的所有元素乘上k加到另一行去

void

print()

}}a,b;

long

long

qpow

(int a,

int b=mod-2)

return ans;

}int

main()

}for

(int i=

1;i<=n;

++i) b[i]

[i]=1;

for(

int i=

1;i<=n;

++i)}}

if(!a[i]

[i])

return

puts

("no solution"),

0;//如果消著消著某一列沒有數了,說明無解

b.mul(i,

qpow

(a[i]

[i])

),a.

mul(i,

qpow

(a[i]

[i]));

for(

int j=i+

1;j<=n;

++j)

}//消成對角矩陣

for(

int i=n-

1;i;

--i)

} b.

print()

;return0;

}

洛谷 P4783 模板 矩陣求逆

可以直接建乙個 n 2 n n times 2 n n 2 n 的矩陣,左半部分為給定矩陣,右半部分為單位矩陣,進行高斯消元 在取模意義下,除法轉化為乘以乘法逆元,模數是質數,逆元用費馬小定理加快速冪求即可。include include using namespace std inline int...

P4783 模板 矩陣求逆

題目大意 給你乙個矩陣 a 求它的逆矩陣 a 使得 aa i 題解 設 a ie 1e 2 cdots e k e i 為乙個變換 那麼 a e k e cdots e 可以在 a 變為 i 的時候對 i 做相同的操作。當 a 變為 i 時,i 就變成了 a 卡點 無 c code include ...

題解 P4783 模板 矩陣求逆

求乙個n n的矩陣的逆矩陣。答案對10 9 7取模。n 400 矩陣的初等變換 矩陣的逆定義為 a b e e為單位矩陣 此時b為a的逆 如果矩陣有逆 那麼這個矩陣經過一系列初等變化之後可以變為e 設一系列初等變化分別為p1,p2,p3.px 顯然可得a p1 p2 p3 px e 所以b p1 p...