列表

详情


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);}

上一题