题目链接:https://ac.nowcoder.com/acm/contest/5188/E
题目大意:
已知A是一个n阶方阵,且A^k=0,E是一个n阶单位矩阵,求(E+A+A^2+……A^k-1)的逆。
第一行输入两个正整数n,k,表示矩阵的阶数和幂。2<=n<=1000,k<=1e18
题解:根据等比数列求和,设原式=E(E-Ak)/(E-A)=(E-A)^(-1),所以原式的逆为E-A
代码:
#include<bits/stdc++.h> #define LL long long using namespace std; LL n,k; LL a[1002][1002]; int main() { cin>>n>>k; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { cin>>a[i][j]; if(i==j)a[i][j]=1-a[i][j]; else a[i][j]=-1*a[i][j]; } } for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { cout<<a[i][j]<<" "; } cout<<endl; } return 0; }