比赛 矩阵乘法练习赛 评测结果 AATTTTTTTT
题目名称 矩阵幂之和 最终得分 20
用户昵称 Lixj 运行时间 24.154 s
代码语言 C++ 内存使用 3.23 MiB
提交时间 2025-04-28 21:50:50
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
unsigned long long n,k,mo,a[33][33],b[33][33],qh[33][33];
void juzhen(unsigned long long x){
	int c[33][33]={0};
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			for(int o=1;o<=n;o++){
				c[i][j]+=b[i][o]*a[o][j]%mo;
			}
		}
	}
	for(int i=1;i<=n;i++){
    	for(int j=1;j<=n;j++){
    		b[i][j]=c[i][j]%mo;
		}
	}
}
 
int main(){
	freopen("matrix_sum.in","r",stdin);
	freopen("matrix_sum.out","w",stdout);
	cin>>n>>k>>mo;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>a[i][j];
			b[i][j]=a[i][j]%mo;
			qh[i][j]=a[i][j]%mo;
		}
	}
	for(int i=2;i<=k;i++){ 
		juzhen(i);
		for(int o=1;o<=n;o++){
			for(int g=1;g<=n;g++){
				qh[o][g]+=b[o][g];
				qh[o][g]=qh[o][g]%mo;
			}
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cout<<qh[i][j]<<" ";
		}
		cout<<endl;
	}
}