题解:洛谷 P2241 统计方形(数据加强版)
【题目来源】
洛谷:P2241 统计方形(数据加强版) - 洛谷 (luogu.com.cn)
【题目描述】
有一个 \(n\times m\) 方格的棋盘,求其方格包含多少正方形、长方形(不包含正方形)。
【输入】
一行,两个正整数 \(n,m(n\le 5000,m\le 5000)\)。
【输出】
一行,两个正整数,分别表示方格包含多少正方形、长方形(不包含正方形)。
【输入样例】
2 3
【输出样例】
8 10
【解题思路】


【算法标签】
《洛谷 P2241 统计方形(数据加强版)》 #数学# #枚举#
【代码详解】
#include <bits/stdc++.h> // 包含常用的头文件
using namespace std;
int main()
{
// 定义变量
long long n, m, z = 0, c = 0; // n 和 m 是输入的两个维度,z 和 c 是计算结果
// 注意:5000*5000 的累加结果会超过 int 的最大范围,因此使用 long long
// 输入 n 和 m
cin >> n >> m;
// 双重循环遍历 i 和 j
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
// 计算 z:累加 min(i, j)
z += min(i, j);
// 计算 c:累加 i*j - min(i, j)
c += i * j - min(i, j);
}
}
// 输出结果 z 和 c
cout << z << " " << c;
return 0; // 程序结束
}
【运行结果】
2 3
8 10
浙公网安备 33010602011771号