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 想知道 中有多少个好的子矩阵。

输入

第一行,两个正整数$n,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;
 }