poj 3318(随机。。。。有正常的方法)

 1 #include <iostream>

 2 #include <cstdio>

 3 #include <cstring>

 4 #include <algorithm>

 5 #include <time.h>

 6 using namespace std;

 7 

 8 const int maxn=5e2+10;

 9 long A[maxn][maxn],B[maxn][maxn],C[maxn][maxn];

10 

11 int n;

12 

13 int main()

14 {

15     srand((unsigned)time(NULL));

16     while(scanf("%d",&n) != EOF)

17     {

18         for(int i=1;i<=n;i++)

19             for(int j=1;j<=n;j++)

20                 scanf("%d",&A[i][j]);

21         for(int i=1;i<=n;i++)

22             for(int j=1;j<=n;j++)

23                 scanf("%d",&B[i][j]);

24         for(int i=1;i<=n;i++)

25             for(int j=1;j<=n;j++)

26                 scanf("%d",&C[i][j]);

27         bool ans=1;

28         for(int x=0;x<60000;x++)

29         {

30             int i=rand()%n+1;

31             int j=rand()%n+1;

32             long sum=0;

33             for(int k=1;k<=n;k++)

34                 sum+=(A[i][k]*B[k][j]);

35             if(C[i][j] != sum)

36             {

37                 ans=0;

38                 break;

39             }

40         }

41         if(ans) puts("YES");

42         else puts("NO");

43     }

44     return 0;

45 }

 

你可能感兴趣的:(poj)