题目
统计方形(数据加强版)
题目背景
1997年普及组第一题
题目描述
有一个 n × m n \times m n×m 方格的棋盘,求其方格包含多少正方形、长方形(不包含正方形)。
输入格式
一行,两个正整数 n , m n,m n,m( n ≤ 5000 , m ≤ 5000 n \leq 5000,m \leq 5000 n≤5000,m≤5000)。
输出格式
一行,两个正整数,分别表示方格包含多少正方形、长方形(不包含正方形)。
样例 #1
样例输入 #1
2 3
样例输出 #1
8 10
题解:
思路是如果i和j不相等,就是长方形计数(因为长方形不算正方形的个数) 如果i和j相等,就正方形+1。
而个数=(n-i+1) (m-j+1)
为什么要+1,画图就知道了,n-i以后边还少1,就是多减了一个1,所以要+1。*
#include <iostream>
using namespace std;
const int N= 5010;
int n,m;
int main(){
cin >> n >> m;
long long sqr = 0,rec = 0;
for(int i=1;i <= n;i++){
for(int j=1;j <= m;j++){
if(i==j) sqr += (n-i+1) * (m-j+1);
else rec += (n-i+1) * (m-j+1);
}
}
cout << sqr << ' ' << rec << endl;
}