NC205835. 简单的线性代数
描述
已知A是一个n阶方阵,且A^k=0,E是一个n阶单位矩阵,求(E+A+A^2+……A^k-1)的逆
输入描述
第一行输入两个正整数n,k,表示矩阵的阶数和幂。2<=n<=1000,k<=1e18
接下来n行,读入矩阵A,每个数为int类型整数
输出描述
一个矩阵,表示(E+A+A^2+……A^k-1)的逆
示例1
输入:
3 4 1 2 3 1 -2 1 7 -26 1
输出:
0 -2 -3 -1 3 -1 -7 26 0
C(clang 3.9) 解法, 执行用时: 189ms, 内存消耗: 13032K, 提交时间: 2020-05-24 16:02:18
#include<stdio.h> int ans[10001][10001]; int main(){ int n; int k; scanf("%d %d",&n,&k); for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ scanf("%d",&ans[i][j]); } } for(int i=0;i<n;i++){ ans[i][i]--; } for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ printf("%d ",ans[i][j]*-1); } printf("\n"); } return 0; }
C++11(clang++ 3.9) 解法, 执行用时: 217ms, 内存消耗: 5468K, 提交时间: 2020-05-24 17:45:24
#include<stdio.h> int main(){ int n,m,a; scanf("%d%d",&n,&m); for(int i = 0; i < n; ++i){ for(int j = 0; j < n; ++j){ scanf("%d",&a); printf("%d%c", (i == j) - a, " \n"[j==n-1]); } } }
Python3(3.5.2) 解法, 执行用时: 1648ms, 内存消耗: 33984K, 提交时间: 2020-05-24 14:01:53
n = int(input().split(' ')[0]); mat = [list(map(int, input().split(" "))) for r in range(n)]; for i in range(n): mat[i][i] -= 1; for i in range(n): for j in range(n): print(-mat[i][j], end = ' '); print();
C++14(g++5.4) 解法, 执行用时: 223ms, 内存消耗: 5228K, 提交时间: 2020-05-24 17:56:50
#include<bits/stdc++.h> long long a,n,k,i,j; main() { for (std::cin>>n>>k,i=n;i--;puts("")) for(j=n;~(--j);) scanf("%lld",&a),printf("%lld ",(i==j)-a);}