为什么不删去第49行运行就会有神奇的事情发生?
查看原帖
为什么不删去第49行运行就会有神奇的事情发生?
549999
sail_with_pleasure楼主2023/3/24 08:24

这不是具体的哪道题,但一眼能看出来是矩阵乘法模板吧....(第四十九行加上甚至输入都无法输入,但注释掉就好了,求解)

#include<bits/stdc++.h>
using namespace std;
const long long mod=998244353;
int t,n;
struct mat{
	long long l[3001][3001];
	mat(){memset(l,0,sizeof l);}
	mat operator*(const mat &b)const{
		mat res;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				for(int k=1;k<=n;k++){
					res.l[i][j]=(res.l[i][j]+l[i][k]*b.l[k][j])%mod;
				}
			}
		}
		return res;
	}
}a1,b1,c1,z;
long long qpow(long long a,long long b){
	long long ans=1,base=a;
	for(;b;b=b>>1){
		if(b&1)ans=ans*base%mod;
		base=base*base%mod;
	}
	return ans;
}
signed main(){
	//freopen("matrix.in","r",stdin);
	//freopen("matrix.out","r",stdout);
	cin>>t;
	while(t--){
		cin>>n;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				scanf("%lld",&a1.l[i][j]);
			}
		}
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				scanf("%lld",&b1.l[i][j]);
			}
		}
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				scanf("%lld",&c1.l[i][j]);
			}
		}
		z=a1*b1;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				printf("%lld ",z.l[i][j]);
			}
			cout<<endl;
		}
	}
	return 0;
} 
2023/3/24 08:24
加载中...