棋盘问题

 

 

关于(n,m)找正方形长方形问题

正方形

边长为1的正方形个数为n*m

边长为2的正方形个数为(n-1)*(m-1) 

边长为3的正方形为个数(n-2)*(m-2)

边长为min(n,m)的正方形为个数s1=(n-min(n,m)+1)*(m-min(n,m)+1)

然后从边长为1到min(m,m)的正方形个数全部加起来;

 长方形

由于正方形是特殊的长方形

总数s2=((1+n)*(1+m)*n*m)/4-正方形的个数(该题只考虑非正方形的长方形)

#include <bits/stdc++.h>
using namespace std;
int main()
{
 int n,m,s1=0,s2;
 cin>>n>>m;
 s2=((m+1)*(n+1)*m*n)/4;
 for(;m>=1&&n>=1;m--,n--)
  s1+=m*n;                       
 cout<<s1<<" "<<s2-s1;
return 0;
}

  

posted @ 2020-11-05 11:13  瓜子NEW-G  阅读(73)  评论(0)    收藏  举报