P2241 统计方形(数据加强版) - 洛谷 | 计算机科学教育新生态
题目描述
有一个 n×mn×m 方格的棋盘,求其方格包含多少正方形、长方形(不包含正方形)。
输入格式
一行,两个正整数 n,mn,m(n≤5000,m≤5000n≤5000,m≤5000)。
输出格式
一行,两个正整数,分别表示方格包含多少正方形、长方形(不包含正方形)。
代码解答
#include<iostream>
using namespace std;
int main()
{
long long n, m;
cin >> n>> m;
long long a = min(n, m);//正方形最大边长
long long square = 0, rectangle = 0;
for (int i = 1; i <= a; i++)
{
square += (n - i + 1) * (m - i + 1);
}
for (int i = 1; i <=n; i++) {
for (int j = 1; j <= m; j++) {
if (i != j) {
rectangle+= (n - i + 1) * (m - j + 1);
}
}
}
cout << square << " " << rectangle << endl;
}