深基第10章暴力枚举:P2241 统计方形(数据加强版)
crystallee · · 题解
P2241 统计方形(数据加强版)
//P2241 统计方形(数据加强版)
#include <bits/stdc++.h>
using namespace std;
long long rect=0,squ=0,test;//定义矩形和正方形的数量
int main(){
long long n,m;//一定要定义为长整型,不然计算 n*(n+1)*m*(m+1)/4时会出错
cin>>n>>m;
for (int i=1;i<=min(n,m);i++){//从1到较短的边长数循环一遍
squ+=(n-i+1)*(m-i+1);
//行和列上边长为i的数量是n-i+1个和m-i+1个,根据排列组合可算出边长为i的正方形共有(n-i+1)*(m-i+1) 个
}
rect=n*(n+1)*m*(m+1)/4-squ;//长方形个数=所有矩形的个数-正方形的个数
cout<<squ<<" "<<rect<<endl;
//printf("%lld %lld\n",squ,rect);
return 0;
}