描述
设有一个N*M方格的棋盘( l≤N≤100,1≤M≤100)。求出该棋盘中包含有多少个正方形、多少个长方形(不包括正方形)。
输入一行,n和m,用空格隔开,代表棋盘长和宽输出一行,两个值,分别是正方形个数和长方形个数,用空格隔开样例输入
3 2
样例输出
8 10
边长为1的正方体:m*n;
边长为2的正方体:(m-1)*(n-1)//我的理解:一共有m-1个2条边连在一起的,n-1个两条边连在一起的
一直到min(m,n)
共s1个正方体
长为1的长方体:n个;长为2的长方体:n-1个(有n-1个两条边)共s2
宽为1的长方体:m个;宽为2的长方体:m-1个 共s3
总共:s2*s3;
还要减去正方体
所以:正方体:s1;长方体:s2*s3-s1
#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n,m,s1=0,s2=0,s3=0,s=0;
cin>>n>>m;
for(int i=0;i<min(n,m);i++)
{
s1+=(m-i)*(n-i);
}
for(int i=1;i<=n;i++)
{
s2+=i;
}
for(int i=1;i<=m;i++)
{
s3+=i;
}
s2=s2*s3-s1;
cout<<s1<<" "<<s2<<endl;
return 0;
}