洛谷 P2241 统计方形(数据加强版)

在这里插入图片描述
思路:假设n<m,边长为n的正方形个数为i(n-m+i)*
总的正方形数为:sigma [i(n-m+i)] (i=1,2……min{n,m})*
矩形个数为:n行有n+1条横边,m列有m+1条竖边,从横边和竖边中各选两条构成矩形,组合数Cn+1,2*Cm+1,2。长方形数=矩形数-正方形数

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
# define loop i=1;i<=num;i++
int main()
{
	ll n, m,i;
	cin >> n >> m;
	ll num = n < m ? n : m;
	ll d = abs(n-m);
	ll square=0, rectangle=0;
	for (loop) 
		square += i * (d + i);
	rectangle = n* (n + 1)/2*m*(m+1)/2-square;
	cout << square<<' '<<rectangle;
	return 0;
}
发布了99 篇原创文章 · 获赞 44 · 访问量 5539

猜你喜欢

转载自blog.csdn.net/weixin_44413191/article/details/102537117