标签:试题 int sum 矩阵 System sc new 乘法 out
问题描述
给定一个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.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int x=sc.nextInt();
int m=sc.nextInt();
int n=x*x;
int a[]=new int[n];
int t;
int sum=0,b[]=new int[n];
for(int i=0;i<n;i++) {
t=sc.nextInt();
a[i]=b[i]=t;
}
int c[]=new int[n];//用于暂时存储中间结果
for(int s=0;s<m-1;s++) {//让单一的矩阵相乘循环乘起来
for(int i=0;i<x;i++) {
for(int k=0;k<x;k++) {
sum=0;
for(int j=0;j<x;j++) {
sum+=b[i*x+j]*a[j*x+k];
}
c[i*x+k]=sum;
}
}
for(int q=0;q<n;q++) {
b[q]=c[q];
}
}
if(m==0) {//指数为0,结果为单位矩阵
for(int i=0;i<n;i++) {
if(i==(i%x)*x+(i%x))System.out.print("1 ");
else System.out.print("0 ");
if((i+1)%x==0) System.out.println("");
}
}
else {
for(int i=0;i<n;i++) {
System.out.print(b[i]+" ");
if((i+1)%x==0) System.out.println("");
}
}
}
}
单位矩阵:对角线为1,其他为0的矩阵
标签:试题,int,sum,矩阵,System,sc,new,乘法,out 来源: https://blog.csdn.net/qq_44830087/article/details/114377261
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。