[GESP202503 四级] 二阶矩阵c++
题目描述
小 A 有一个 n 行 m 列的矩阵 A。
小 A 认为一个 2×2 的矩阵 D 是好的,当且仅当 。其中
表示矩阵 D 的第 i 行第 j 列的元素。
小 A 想知道 A 中有多少个好的子矩阵。
输入
第一行,两个正整数 n,m。
接下来 n 行,每行 m 个整数 。
对于所有测试点,保证 1≤n≤500,1≤m≤500,−100≤≤100
输出
一行,一个整数,表示 A 中好的子矩阵的数量。
样例输入
3 4
1 2 1 0
2 4 2 1
0 3 3 0
样例输出
2
样例解释
样例中好的子矩阵如下:
分析
只需循环编号部分作为2×2矩阵的左上角顶点(其余无法形成完整的2×2矩阵),所以只需循环到n-1与m-1
而放在这里要变化为:
a[i][j]*a[i+1][j+1]==a[i][j+1]*a[i+1][j]
示例代码:
#include<bits/stdc++.h>
using namespace std;
int main(){long long n,m,a[501][501],s=0;cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];}}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][j+1]*a[i+1][j]){s++;}}}cout<<s;return 0;
}