http://poj.org/problem?id=3318
矩阵A*矩阵B是否等于矩阵C
1 #include <cstdio> 2 #include <cstring> 3 #include <time.h> 4 #include <algorithm> 5 #define maxn 1010 6 using namespace std; 7 8 int a[maxn][maxn],b[maxn][maxn],c[maxn][maxn],d[maxn]; 9 int n; 10 int b1[maxn],c1[maxn],a1[maxn]; 11 12 int main() 13 { 14 while(scanf("%d",&n)!=EOF) 15 { 16 for(int i=0; i<n; i++) 17 { 18 for(int j=0; j<n; j++) 19 scanf("%d",&a[i][j]); 20 } 21 for(int i=0; i<n; i++) 22 { 23 for(int j=0; j<n; j++) 24 { 25 scanf("%d",&b[i][j]); 26 } 27 } 28 for(int i=0; i<n; i++) 29 { 30 for(int j=0; j<n; j++) 31 { 32 scanf("%d",&c[i][j]); 33 } 34 } 35 srand((unsigned int)time(0)); 36 for(int i=0; i<n; i++) 37 { 38 d[i]=rand()%100; 39 } 40 for(int i=0; i<n; i++) 41 { 42 for(int j=0; j<n; j++) 43 { 44 b1[i]+=b[i][j]*d[j]; 45 c1[i]+=c[i][j]*d[j]; 46 } 47 } 48 for(int i=0; i<n; i++) 49 { 50 for(int j=0; j<n; j++) 51 { 52 a1[i]+=a[i][j]*b1[j]; 53 } 54 } 55 bool flag=false; 56 for(int i=0; i<n; i++) 57 { 58 if(a1[i]!=c1[i]) 59 { 60 flag=true; 61 break; 62 } 63 } 64 if(!flag) printf("YES "); 65 else printf("NO "); 66 } 67 return 0; 68 }