求助一道矩阵乘法
查看原帖
求助一道矩阵乘法
940678
lhrfc楼主2023/2/16 10:01
#include <bits/stdc++.h>
using namespace std;
class juzhen{
public:
	int s[110][110];
	int n;
	juzhen(int k){
		n=k;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++) s[i][j]=1;
		}
	}
	juzhen operator*(const juzhen &a)const{
		juzhen ans(n);
		ans.n=n;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				ans.s[i][j]=0;
				for(int k=1;k<=n;k++) ans.s[i][j]+=s[i][k]*a.s[k][j];
			}
		}
		return ans;
	}
	void print(){
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++) cout<<s[i][j]<<" ";
			cout<<endl;
		}
	}
};
juzhen qpow(juzhen a,int k){
	juzhen res(a.n);
	res.n=a.n;
	while(k){
		if(k&1) res=(res*a);
		a=(a*a);
		k>>=1;
	}
	return res;
}
int n,k;
int main(){
	cin>>n>>k;
	juzhen a(n);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++) cin>>a.s[i][j];
	}
	juzhen ans=qpow(a,k);
	ans.print();
}
2023/2/16 10:01
加载中...