题解 P1548 【棋盘问题】

· · 题解

看到各位大佬手算公式,身为蒟蒻的我早已吓呆了
题目说的好,m,n<100,常言“暴力出奇迹”,我立刻想到了:

枚举

怎么枚举呢,显然,我可以先枚举左上的点,再枚举右下的点,坐标一减,是不是正方形显而易见
号称全国NO.1易懂的代码:

#include<bits/stdc++.h>
using namespace std;
int m,n,z,c,i,j,k,l;    //z用来记正方形个数,c来记长方形
int main()
{
    cin>>m>>n;           //输入
    for(i=0;i<=m;i++)    //枚举
    for(j=0;j<=n;j++)    //枚举
    for(k=i+1;k<=m;k++)  //还是枚举
    for(l=j+1;l<=n;l++)  //仍然是枚举
    if(k-i==l-j)z++;     //是正方形
    else c++;            //是长方形
    cout<<z<<" "<<c;     //输出
}