P2241 统计方形题解
解题思路:
1、正方形
我们以为图形右下角端点进行解释,这时可以构成的正方形共两个,一个是边长为的,另一个是条边为的,没有其它的了。为什么两个数字,一个是,一个是,结果受限于后面的,而无法突破呢?因为要照顾短的嘛。所以此时正方形个数=个。
2、矩形
用笔画一下,就知道,一个长为,宽度为的矩形,以现有右下角端点为右下角端点的子矩形个数是个,所以矩形个数=个。
3、长方形
长方形个数=矩形个数-正方形个数
二、C++代码
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
/**
母题:P1548
一、算正方形的个数
枚举每一个格子,看以它为左上角的矩形共有多少个(正方形与长方形同属于矩形)
二、算长方形个数(矩形=长方形+正方形)
1.其实算长方形并不常见,但算矩形大家应该经常遇到,所以如果你会算矩形,再联系第一个问题,那答案就转化为 矩形个数-正方形个数.
2.像求解正方形个数一样,固定矩形右下角(i,j),显然此时矩形个数为i*j.
3.同理,求和即可.然后,再减去正方形的个数就是长方形的个数啦。
*/
LL n, m, s1, s2;
int main() {
cin >> n >> m;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++) {
s1 += min(i, j);//也可以理解为左上角
s2 += i * j; //也可以理解为左上角开始,也是一样的
}
cout << s1 << " " << s2 - s1 << endl;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2019-07-18 iptable千万不要yum remove iptables
2019-07-18 【Linux】缺少service命令的解决办法
2019-07-18 CentOS7清理老旧内核
2019-07-18 ealsticsearch历史版本下载