4677: 【GESP2503四级】二阶矩阵
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:1
解决:1
题目描述
⼩ A 有一个$n$ 行$m$ 列的矩阵$A$ 。
小 A 认为一个$2×2$ 的矩阵$D$ 是好的,当且仅当$D_{1,1}×D_{2,2}=D_{1,2}×D_{2,1}$ 。其中 表示矩阵$D$ 的第$i$ 行第 $j$列的元素。
小 A 想知道 中有多少个好的子矩阵。
小 A 认为一个$2×2$ 的矩阵$D$ 是好的,当且仅当$D_{1,1}×D_{2,2}=D_{1,2}×D_{2,1}$ 。其中 表示矩阵$D$ 的第$i$ 行第 $j$列的元素。
小 A 想知道 中有多少个好的子矩阵。
输入
第一行,两个正整数$n,m$ 。
接下来$n$ 行,每行$m$ 个整数$A_{i,1},A_{i,2},...,A_{i,m}$ 。
接下来$n$ 行,每行$m$ 个整数$A_{i,1},A_{i,2},...,A_{i,m}$ 。
输出
一行,一个整数,表示$A$ 中好的子矩阵的数量。
样例输入 复制
3 4
1 2 1 0
2 4 2 1
0 3 3 0
样例输出 复制
2
提示
#include <bits/stdc++.h> using namespace std; const int N = 505; int n, m; int a[N][N]; int ans; int main() { scanf("%d%d", &n, &m); assert(1 <= n && n <= 500 && 1 <= m && m <= 500); for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) { scanf("%d", &a[i][j]); assert(-100 <= a[i][j] && a[i][j] <= 100); } for (int i = 1; i < n; i++) for (int j = 1; j < m; j++) if (a[i][j] * a[i + 1][j + 1] == a[i + 1][j] * a[i][j + 1]) ans++; printf("%d\n", ans); return 0; }