专栏首页ypw蓝桥杯 试题 基础练习 矩阵乘法

蓝桥杯 试题 基础练习 矩阵乘法

题意:给定一个N阶矩阵A,输出A的M次幂(M是非负整数)

思路:需要了解矩阵的相关性质,矩阵的0次幂为单位矩阵,及主对角线为1,其余的都为0,矩阵的1次幂为本身,当大于等于2时,需要每次等到一次相乘后的矩阵后,赋值给另一个数组,然后幂次数减一,如此直到循环结束

#include<bits/stdc++.h>
#define maxn 100
using namespace std;

int a[maxn][maxn];
int b[maxn][maxn];
int c[maxn][maxn];

int main(){
    int n,m;
    cin>>n>>m;
    for(int i=0;i<n;i++){
    	for(int j=0;j<n;j++){
    		cin>>a[i][j];
    		b[i][j]=a[i][j];
		}
	}
	if(m == 0){
		for(int i=0;i<n;i++){
			for(int j=0;j<n;j++){
				if(i == j){
					cout<<"1 ";
				}
				else
				 cout<<"0 ";
			}
			cout<<endl; 
		}
	}
	else if(m == 1){
		for(int i=0;i<n;i++){
			for(int j=0;j<n;j++){
				cout<<a[i][j]<<" ";
			}
			cout<<endl;
		} 
	}
	else if(m>=2){
		
	while(m >= 2){
		for(int i=0;i<n;i++){
			for(int j=0;j<n;j++){
				int res = n;
				while(res){
					c[i][j]+=b[i][res-1]*a[res-1][j];
					res--;
				}
			}
		}
		for(int i=0;i<n;i++){
			for(int j=0;j<n;j++){
				b[i][j] = c[i][j];
				c[i][j] = 0;
			}
		}
		m--;//阶乘减一 
	}
		for(int i=0;i<n;i++){
			for(int j=0;j<n;j++){
				cout<<b[i][j]<<" ";
			}
			cout<<endl;
		} 
	}
	return 0;
} 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 蓝桥杯 试题 基础练习 阶乘计算

    杨鹏伟
  • Minesweeper(蓝桥杯)

    然后就想着更好的方法嘛,就是给雷区标记,然后每个区的贡献值都是周围八个区的贡献值叠加。边输入边更新就能得到答案!

    杨鹏伟
  • DFS+记忆化搜索 -- 简单练习

    题意:你要去滑雪,你想在整个场地上找到一条最长的路好让你能够滑的尽兴!那么你要找出这条路

    杨鹏伟
  • 2015年海淀区信息学竞赛小学组详细答案

    海天一树
  • 蓝桥杯 试题 基础练习 阶乘计算

    杨鹏伟
  • P1719 最大加权矩形

    为了更好的备战NOIP2013,电脑组的几个女孩子LYQ,ZSC,ZHQ认为,我们不光需要机房,我们还需要运动,于是就决定找校长申请一块电脑组的课余运动场地,听...

    attack
  • Minesweeper(蓝桥杯)

    然后就想着更好的方法嘛,就是给雷区标记,然后每个区的贡献值都是周围八个区的贡献值叠加。边输入边更新就能得到答案!

    杨鹏伟
  • 蛇形矩阵

    先仔细观察,是能发现规律的,然后就先对第一行处理得到数据,然后每一列之间也是有规律的,然后就对列进行处理,在然后就输出控制下格式就行了!

    杨鹏伟
  • DFS+记忆化搜索 -- 简单练习

    题意:你要去滑雪,你想在整个场地上找到一条最长的路好让你能够滑的尽兴!那么你要找出这条路

    杨鹏伟
  • POJ - 3074 Sudoku (搜索)剪枝+位运算优化

    In the game of Sudoku, you are given a large 9 × 9 grid divided into smaller 3 ×...

    风骨散人Chiam

扫码关注云+社区

领取腾讯云代金券