一些文字说明
我们首先来定义一个东西,在我这里,矩形的长是指横向的边的长度,宽是指纵向的边的长度,宽可以比长还长。
由题意可知,题目要求我们求出在一个m*n的矩形中求出其包含的长方形的数量和正方形的数量,而长方形和正方形都是矩形,那么我们就是要求其包含的矩形的数量,可以通过长与宽相等时来区分是长方形还是正方形。
这个矩形的长与宽的取值范围分别是(0, m],(0, n]
具体如何计算矩形个数,请看例子
例子
例子1
上图是长为2,宽为1的长方形,其数量为(5-1)*3
以此图为基础,令长方形的长为5,宽为2,其数量为(5-4)*(3-1)
以此图为基础,令长方形的长为1,宽为3,其数量为5*(3-2)
例子2
上图是边长2的正方形,其数量为(5-1)(3-1)
总结
由上述两个例子的分析可知,对于长和宽不同的矩形的数量我们可以通过以下公式求出
(m-a)*(n-b) 当a=b时,矩形为正方形,其余情况为长方形,a的取值范围为[1, m-1],b的取值范围为[1, n-1]
这样,我们就可以通过枚举来分别求得长方形和正方形的数量
c++代码
#include<iostream>
using namespace std;
void result(int m, int n)
{
long long squ = 0, rect = 0;
for (int i = 0; i < m; i++)
{
for (int j=0; j < n; j++)
{
if (i == j)//正方形
squ += (m - i) * (n - j);
else
rect += (m - i) * (n - j);
}
}
cout << squ << " " << rect << endl;
}
int main()
{
long long m, n;//长,宽
cin >> n >> m;
result(m, n);
return 0;
}
标签:洛谷,加强版,int,P2241,长方形,long,正方形,矩形,数量
From: https://blog.csdn.net/2301_80075659/article/details/136749871