对于一个n*m的棋盘,共有矩形 (m+m-1+m-2+...+1)*(n+n-1+n-2+...+1)
即[m*(m+1)/2]*[n*(n+1)/2]个,这一步可用前一个式子循环加,也可用后一个式子直接算;
共有正方形(假设m>n) m*n+(m-1)*(n-1)+...+(m-n+1)*1 个,这步用循环做就行;
你所说的长方形就用 矩形数 减去 正方形数 就行了。
#include
#include
int main()
{
long long n,m,square,rectangle=0,l,w,i,tem;
scanf("%lld %lld",&n,&m);
if(n>m)//保证n<=m
{
tem=n;n=m;m=tem;
}
for(i=2,square=0;i<=n;i++)
square=square+(n-i+1)*(m-i+1);
for(l=1;l<=m;l++)
for(w=1;w<=n;w++)
rectangle=rectangle+(n-w+1)*(m-l+1);
square=square+n*m;
rectangle=rectangle-square;
printf("%lld %lld",square,rectangle);
system("pause");
return 0;
}
已经发给你了
drthdtyjfyukghujkgyukftyjfc tyjkftyjftyuftryudftyudftyjufu