Problem Description:
给定一个N阶矩阵A,输出A的M次幂(M是非负整数)
例如:
A =
1 2
3 4
A的2次幂
7 10
15 22
Input:
第一行是两个整数N、M(1< =N< =30, 0< =M< =5),表示矩阵A的阶数和要求的幂数
接下来N行,每行N个不超过10的非负整数,描述矩阵A的值。
Output:
输出共N行,每行N个整数,表示A的M次幂所对应的矩阵。每个数后有一个空格。
Sample Input:
2 2
1 2
3 4
Sample Output:
7 10
15 22
提示:
要注意m等于0和不等于0的情况
程序代码:
#include <iostream>
using namespace std;
long long int b[40][40];
int main()
{
int n,m;
cin>>n>>m;
long long int a[40][40];
long long int t[40][40];
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cin>>a[i][j];
t[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<<0<<" ";
}
else
{
cout<<1<<" ";
}
}
cout<<endl;
}
return 0;
}
while(--m)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
int k=n;
while(k)
{
b[i][j]+=t[i][k-1]*a[k-1][j];
k--;
}
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
t[i][j]=b[i][j];
b[i][j]=0;
}
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cout<<t[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
本文标题:蓝桥杯-矩阵乘法
本文链接:https://blog.quwenai.cn/post/2732.html
版权声明:本文不使用任何协议授权,您可以任何形式自由转载或使用。






还没有评论,来说两句吧...