统计方形(暴力枚举)

洛谷P2241-统计方形

题目描述:

有一个 n×m 方格的棋盘,求其方格包含多少正方形、长方形(不包含正方形)。

java 复制代码
import java.util.*;
public class Main {
    public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		int n=in.nextInt();
		int m=in.nextInt();
		int sum=0,square=0;
		for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++){
				//sum为所有矩形总数
				sum += i * j;
				//square为正方形个数
				square += i < j ? i : j;	
			}
		//输出正方形数 和 矩形数(不包括正方形)
		System.out.println(square+" "+(sum-square));
	   
    }
}

测试用例:输入:2 3 输出:8 10


思路:

所有方形的个数=正方形的个数+长方形的个数。对于任意一个n行m列的矩形,以这个方形右下角的那个块作为要在矩形内选择正方形或长方形的右下角,则正方形的个数为min(i,j),长方形的个数为i∗j

解释如下:

对于一个n行m列的矩形,右下角的块必选,则能和这个块组成的正方形的右上角块全在这个主对角线上,而对角线上块的数量就是min(i,j)。对于矩形来说,n行m列的矩形内所有点都能和右下角的这个点构成长方形,所以长方形的数量就是i*j。

相关推荐
初九之潜龙勿用几秒前
C# 解决“因为算法不同,客户端和服务器无法通信”的问题
服务器·开发语言·网络协议·网络安全·c#
不知名。。。。。。。。4 分钟前
Qt常用控件
开发语言·qt
Mr_Xuhhh15 分钟前
算法题解博客:三道经典题目的思路与实现
算法
算法-大模型备案 多米15 分钟前
大模型备案实操指南:材料、流程与避坑要点
大数据·网络·人工智能·算法·文心一言
untE EADO17 分钟前
SpringBoot:几种常用的接口日期格式化方法
java·spring boot·后端
顾温19 分钟前
数据转换函数
开发语言·算法
一个人说晚安20 分钟前
Docker 部署 OpenClaw 并接入第三方大模型 (MiniMax) 完整排坑指南
java·开发语言·dubbo
汉克老师25 分钟前
GESP2025年6月认证C++三级( 第三部分编程题(1、奇偶校验)
c++·算法·gesp三级·gesp3级·按位操作
AI职业加油站25 分钟前
数据要素时代:大数据治理工程师证书深度解码
大数据·开发语言·人工智能·python·数据分析
CoderCodingNo26 分钟前
【GESP】C++八级考试大纲知识点梳理 (8) 算法优化技巧
开发语言·c++