蓝桥杯-矩阵乘法

举报
positive 发表于 2022/02/22 11:22:15 2022/02/22
【摘要】 资源限制时间限制:1.0s   内存限制:512.0MB问题描述  给定一个N阶矩阵A,输出A的M次幂(M是非负整数)  例如:  A =  1 2  3 4  A的2次幂  7 10  15 22输入格式  第一行是一个正整数N、M(1<=N<=30, 0<=M<=5),表示矩阵A的阶数和要求的幂数  接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值输出格式  输出共N行,每...
资源限制
时间限制:1.0s   内存限制:512.0MB
问题描述
  给定一个N阶矩阵A,输出A的M次幂(M是非负整数)
  例如:
  A =
  1 2
  3 4
  A的2次幂
  7 10
  15 22
输入格式
  第一行是一个正整数N、M(1<=N<=30, 0<=M<=5),表示矩阵A的阶数和要求的幂数
  接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值
输出格式
  输出共N行,每行N个整数,表示A的M次幂所对应的矩阵。相邻的数之间用一个空格隔开
样例输入
2 2
1 2
3 4
样例输出
7 10
15 22

提交代码



import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int m = sc.nextInt();
		long[][] a = new long[n][n];//用int容易越界,所以用long
		long[][] b = new long[n][n];
		for(int i = 0;i<n;i++) {
			for(int j = 0;j<n;j++) {
				a[i][j] = b[i][j] = sc.nextLong();//写出两个矩阵,然后相乘
			}
		}
		if(m == 0) {//矩阵得0次幂等于单位矩阵E
			for(int i = 0;i<n;i++) {
				for(int j = 0;j<n;j++) {
					if(i == j) {
						System.out.print(1+" ");
					}
					else
					{
						System.out.print(0+" ");
					}
				}
				System.out.println();
			}
		}
		else if(m == 1) {//输出自己
			for(int i = 0;i<n;i++) {
				for(int j = 0;j<n;j++) {
					System.out.print(a[i][j]+" ");
				}
			System.out.println();
			}
		}
		else {
		
			for(int i = 1;i<m;i++) {
				long[][] db = new long[n][n]; //临时矩阵
				for(int j = 0;j<n;j++) {
					for(int k = 0;k<n;k++) {
						for(int l = 0;l<n;l++) {
							db[j][k] +=a[j][l]*b[l][k]; //核心公式
						}						
					}
				}
				b = db;//将db赋值给b,下次幂运算就用二次乘一次达到递增
			}
			//输出
			for(int i = 0;i<n;i++) {
				for(int j = 0;j<n;j++) {
					System.out.print(b[i][j]+" ");
				}
			System.out.println();
			}
		}
	}
}

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。