题意:
给出三个n*n的矩阵A,B,C看是否A*B=C;
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
#include<ctime>
#define bug puts("************")
#define INF 0x3f3f3f3f
#define LL long long
using namespace std;
const int N =550;
struct Mat{
int mat[N][N];
}st[4];
int n;
bool vis[N][N];
int mmul(){
srand((unsigned)time(NULL)); ///g++re ///
Mat c;
memset(vis,0,sizeof(vis));
memset(c.mat,0,sizeof(c.mat));
for(int i=0;i<80000;i++){
int x=rand()%n;
int y=rand()%n;
if(vis[x][y])continue;
vis[x][y]=1;
int sum=0;
for(int j=0;j<n;j++){
sum+=st[0].mat[x][j]*st[1].mat[j][y];
}
if(sum!=st[2].mat[x][y])
return 0;
}
return 1;
}
int main(){
scanf("%d",&n);
for(int i=0;i<3;i++){
for(int j=0;j<n;j++){
for(int k=0;k<n;k++)
scanf("%d",&st[i].mat[j][k]);
}
}
int flag=mmul();
if(flag)
puts("YES");
else puts("NO");
return 0;
}