標籤:des style blog color os strong io 資料
給你三個矩陣A,B,C。讓你判斷A*B是否等於C。
隨機一組資料,然後判斷乘以A,B之後是否與乘C之後相等。
很扯淡的啊,感覺這種演算法不嚴謹啊、、、
Matrix Multiplication
| Time Limit: 2000MS |
|
Memory Limit: 65536K |
| Total Submissions: 16255 |
|
Accepted: 3515 |
Description
You are given three n × n matrices A, B and C. Does the equation A × B = C hold true?
Input
The first line of input contains a positive integer n (n ≤ 500) followed by the the three matrices A, B and C respectively. Each matrix‘s description is a block of n × n integers.
It guarantees that the elements of A and B are less than 100 in absolute value and elements of C are less than 10,000,000 in absolute value.
Output
Output "YES" if the equation holds true, otherwise "NO".
Sample Input
21 02 35 10 85 110 26
Sample Output
YES
Hint
Multiple inputs will be tested. So O(n3) algorithm will get TLE.
#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <time.h>#include <vector>#include <queue>#include <set>#include <map>#include <string>#include <math.h>#include <stdlib.h>#define max( x, y ) ( ((x) > (y)) ? (x) : (y) )#define min( x, y ) ( ((x) < (y)) ? (x) : (y) )#define Mod 1000000007#define LL long longusing namespace std;const int maxn = 510;int a[maxn][maxn];int b[maxn][maxn];int c[maxn][maxn];int f[maxn];int aa[maxn];int bb[maxn];int cc[maxn];int main(){ int n; cin >>n; memset(aa, 0, sizeof(aa)); memset(bb, 0, sizeof(bb)); memset(cc, 0, sizeof(cc)); for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) scanf("%d",&a[i][j]); for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) scanf("%d",&b[i][j]); for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) scanf("%d",&c[i][j]); srand((unsigned int)time(0)); for(int i = 0; i < n; i++) f[i] = rand()%100; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { bb[i] += b[i][j]*f[j]; cc[i] += c[i][j]*f[j]; } } for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) aa[i] += a[i][j]*bb[j]; int flag = 0; for(int i = 0; i < n; i++) { if(aa[i] != cc[i]) { flag = 1; break; } } if(flag) cout<<"NO"<<endl; else cout<<"YES"<<endl;}