题目描述设有一个 n×m 方格的棋盘1≤n,m≤100求棋盘内一共有多少个正方形、多少个长方形长方形不包含正方形。说明方格棋盘的格点范围横坐标 0∼n纵坐标 0∼m任意选取两个点 (i,j)、(q,p)要求 两点作为矩形的左上、右下顶点若两点行差等于列差则围成正方形否则是普通长方形。输入格式一行两个整数 代表棋盘纵向、横向方格数量。输出格式一行两个整数依次输出正方形总数、长方形不含正方形总数。样例输入2 3输出8 10代码我放这里了#include bits/stdc.h using namespace std; int main(){ int n,m,i,j,q,p; scanf(%d %d,n,m); int z0,c0; // 第一层、第二层枚举左上角点 (i,j) for(i0; in; i) { for(j0; jm; j) { // 第三层、第四层枚举右下角点 (q,p)保证qipj for(qi1;qn;q) { for(pj1;pm;p) { // 横差 q-i纵差 p-j相等就是正方形 if((q-i)(p-j)) z; else c; } } } } printf(%d %d,z,c); return 0; }
C++[NOIP1997 普及组]棋盘问题
题目描述设有一个 n×m 方格的棋盘1≤n,m≤100求棋盘内一共有多少个正方形、多少个长方形长方形不包含正方形。说明方格棋盘的格点范围横坐标 0∼n纵坐标 0∼m任意选取两个点 (i,j)、(q,p)要求 两点作为矩形的左上、右下顶点若两点行差等于列差则围成正方形否则是普通长方形。输入格式一行两个整数 代表棋盘纵向、横向方格数量。输出格式一行两个整数依次输出正方形总数、长方形不含正方形总数。样例输入2 3输出8 10代码我放这里了#include bits/stdc.h using namespace std; int main(){ int n,m,i,j,q,p; scanf(%d %d,n,m); int z0,c0; // 第一层、第二层枚举左上角点 (i,j) for(i0; in; i) { for(j0; jm; j) { // 第三层、第四层枚举右下角点 (q,p)保证qipj for(qi1;qn;q) { for(pj1;pm;p) { // 横差 q-i纵差 p-j相等就是正方形 if((q-i)(p-j)) z; else c; } } } } printf(%d %d,z,c); return 0; }