题记(32)--矩阵K次幂

目录

一、题目内容

二、输入描述

三、输出描述

四、输入输出示例

五、完整C语言代码


一、题目内容

给定一个n*n的矩阵,求该矩阵的k次幂,即P^k。

二、输入描述

第一行:两个整数n(2<=n<=10)、k(1<=k<=5),两个数字之间用一个空格隔开,含义如上所示。 接下来有n行,每行n个正整数,其中,第i行第j个整数表示矩阵中第i行第j列的矩阵元素Pij且(0<=Pij<=10)。另外,数据保证最后结果不会超过10^8。

三、输出描述

对于每组测试数据,输出其结果。格式为: n行n列个整数,每行数之间用空格隔开,注意,每行最后一个数后面不应该有多余的空格。

四、输入输出示例

输入:

复制代码
2 2
9 8
9 3
3 3
4 8 4
9 3 0
3 5 7
5 2
4 0 3 0 1
0 0 5 8 5
8 9 8 5 3
9 6 1 7 8
7 2 5 7 3

输出:

复制代码
153 96
108 81
1216 1248 708
1089 927 504
1161 1151 739
47 29 41 22 16
147 103 73 116 94
162 108 153 168 126
163 67 112 158 122
152 93 93 111 97

五、完整C语言代码

cpp 复制代码
AC代码~

#include<stdio.h>
int main() {
    int a[10][10], b[10][10];
    int tmp[10][10];   // 临时数组
    int n, k, sum;
    while (scanf("%d%d", &n, &k) != EOF) {
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                scanf("%d", &a[i][j]);
                b[i][j] = a[i][j];
            }
        }
        for (int count = 1; count < k; count++) {
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < n; j++) {
                    sum = 0;
                    for (int k = 0; k < n; k++) {
                        sum += a[i][k] * b[k][j];
                    }
                    tmp[i][j] = sum;
                }
            }
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < n; j++)
                    b[i][j] = tmp[i][j];
            }
        }                                 // 打印结果
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n - 1; j++) {
                printf("%d ", b[i][j]);
            }
            printf("%d\n", b[i][n - 1]);
        }
    }
    return 0;
}
相关推荐
青小莫18 分钟前
C++之模板
android·java·c++
2401_8414956428 分钟前
【数据结构】英文单词词频统计与检索系统
数据结构·c++·算法·排序·词频统计·查找·单词检索
Elnaij38 分钟前
从C++开始的编程生活(17)——多态
开发语言·c++
Frank_refuel42 分钟前
C++之多态详解
开发语言·c++
Elnaij1 小时前
从C++开始的编程生活(18)——二叉搜索树基础
开发语言·c++
王老师青少年编程1 小时前
2024年6月GESP真题及题解(C++七级): 黑白翻转
c++·题解·真题·gesp·csp·七级·黑白翻转
ouliten1 小时前
C++笔记:std::span
c++·笔记
小尧嵌入式1 小时前
【Linux开发二】数字反转|除数累加|差分数组|vector插入和访问|小数四舍五入及向上取整|矩阵逆置|基础文件IO|深入文件IO
linux·服务器·开发语言·c++·线性代数·算法·矩阵
一只小bit1 小时前
Qt 网络:包含Udp、Tcp、Http三种协议的客户端实践手册
前端·c++·qt·页面
jojo_zjx1 小时前
GESP 23年6月2级 找素数
c++