https://codeforces.com/gym/101341/problem/I
题意:
给定三个矩阵 ABC, 问 A*b 是否等于 c
代码:
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- long long mod = 1e9+7;
- long long a[1005][1005], b[1005][1005], c[1005][1005];
- long long re1[1005], re2[1005], re3[1005];
- long long ran[1005];
- int main()
- {
- long long n, i, j;
- scanf("%lld", &n);
- for(i=0;i<n;i++)
- {
- for(j=0;j<n;j++)
- {
- scanf("%lld", &a[i][j]);
- }
- }
- for(i=0;i<n;i++)
- {
- for(j=0;j<n;j++)
- {
- scanf("%lld", &b[i][j]);
- }
- }
- for(i=0;i<n;i++)
- {
- for(j=0;j<n;j++)
- {
- scanf("%lld", &c[i][j]);
- }
- }
- for(i=0;i<n;i++)
- {
- ran[i] = rand() % 100 + 1;
- }
- //cheng 1 1 1 1 1
- for(j=0;j<n;j++)
- {
- re1[j] = 0;
- for(i=0;i<n;i++)
- {
- re1[j] = (re1[j] + ran[i] * a[i][j]) % mod;
- }
- }
- for(j=0;j<n;j++)
- {
- re2[j] = 0;
- for(i=0;i<n;i++)
- {
- re2[j] = (re2[j] + re1[i] * b[i][j]) % mod;
- }
- }
- for(j=0;j<n;j++)
- {
- re3[j] = 0;
- for(i=0;i<n;i++)
- {
- re3[j] = (re3[j] + ran[i] * c[i][j]) % mod;
- }
- }
- for(i=0;i<n;i++)
- {
- if(re2[i]!=re3[i]) break;
- }
- if(i<n) printf("NO\n");
- else printf("YES\n");
- return 0;
- }
来源: http://www.bubuko.com/infodetail-3373701.html