P2241 统计方形(数据加强版)
P2241 统计方形(数据加强版)
题目
有一个
输入
一行,两个正整数
输出
一行,两个正整数,分别表示方格包含多少正方形、长方形(不包含正方形)。
样例
输入
2 3
输出
8 10
思路
根据题意得到如下棋盘,假设长为
尝试直译枚举对象,即枚举矩形的左下角和右上角坐标,统计数量,时间复杂度是枚举矩形左下角横坐标、左下角纵坐标、右上角横坐标、右上角纵坐标之积,为
进一步思考如何减少枚举数量,如果只枚举矩形的一个顶点坐标,同时枚举边长,因统计正方形和长方形的数量,依然要枚举四个变量,枚举顶点坐标的方式可行性不佳。
换一种思路,枚举边长。矩形对边平行且相等,求棋盘包含长为
由于数据范围中
代码
#include <bits/stdc++.h>
using namespace std;
int X, Y;
long long a, b;
int main()
{
cin >> X >> Y;
for (int x = 1; x <= X; x ++ )
{
for (int y = 1; y <= Y; y ++ )
{
if (x == y)
a += (X - x + 1) * (Y - y + 1);
else
b += (X - x + 1) * (Y - y + 1);
}
}
cout << a << ' ' << b << '\n';
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理