棋盘方格

题目

【算法分析】
1.计算正方形的个数s1
边长为1的正方形个数为nm
边长为2的正方形个数为(n-1)
(m-1)
边长为3的正方形个数为(n-2)(m-2)
…………
边长为min{n,m}的正方形个数为(m-min{n,m}+1)
(n-min{n,m}+1)
根据加法原理得出
在这里插入图片描述

2.长方形和正方形的个数之和s
宽为1的长方形和正方形有m个,宽为2的长方形和正方形有m-1个,┉┉,宽为m的长方形和正方形有1个;
长为1的长方形和正方形有n个,长为2的长方形和正方形有n-1个,┉┉,长为n的长方形和正方形有1个;
根据乘法原理

在这里插入图片描述

3.长宽不等的长方形个数s2
显然,s2=s-s1

在这里插入图片描述

#include<bits/stdc++.h> 
#define rep(i, a, b) for(int i = a; i <= b; ++i)
using namespace std;
int main() {
	int n, m;
	scanf("%d%d", &n, &m);
	int tot = (1 + n) * n * (1 + m) * m / 4;
	int square = 0;
	rep(i , 0, min(n, m)) {
		square += (n - i) * (m - i);
	}
	printf("%d %d\n", square, tot - square);
	return 0;
}

https://www.cnblogs.com/qilinart/articles/4995707.html

发布了33 篇原创文章 · 获赞 26 · 访问量 6341

猜你喜欢

转载自blog.csdn.net/qq_41829380/article/details/105658448