标签:数学公式 include 求解 int 正方形 顶点 矩形
矩形数目
在一个n*m的矩形中,请问有多少个矩形、长方形、正方形?
答:首先应该知道矩形=正方形+长方形
,然后我们首先分析如何求解正方形的数量
思想 :我们固定(i , j)
点,以(i, j)
点为右顶点,那么左顶点则应该从(i-1,j-1)
点开始向左上角靠近,每次向左移动一格,左顶点在x ,y轴的投影-1,一直到某个方向的投影为0截止,因此一共min(i ,j)
个正方形。
思想 :同样我们以(i,j)
为矩形的右端点,左端点则从(i-1,j-1)
开始向左扩张,横向长度为j
,竖向长度为i
,所以一共有i*j
个矩形
利用上面的公式即可得到
因此我们只需要遍历整个棋盘即可求出数量,时间复杂度为O(n*m)
// Problem: P2241 统计方形(数据加强版)
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P2241
// Memory Limit: 125 MB
// Time Limit: 1000 ms
//
// Powered by CP Editor (https://cpeditor.org)
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n,m;
cin>>n>>m;
unsigned long long s1=0,s2=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
s1+=min(i,j);
s2+=i*j;
}
cout<<s1<<" "<<s2-s1<<endl;
return 0;
}
标签:数学公式,include,求解,int,正方形,顶点,矩形 来源: https://blog.csdn.net/weixin_56216857/article/details/123070700
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。