Сколько прямоугольников в прямоугольнике.
Вы зашли на страницу вопроса Сколько прямоугольников в прямоугольнике?, который относится к
категории Математика. По уровню сложности вопрос соответствует учебной
программе для учащихся 10 – 11 классов. В этой же категории вы найдете ответ
и на другие, похожие вопросы по теме, найти который можно с помощью
автоматической системы «умный поиск». Интересную информацию можно найти в
комментариях-ответах пользователей, с которыми есть обратная связь для
обсуждения темы. Если предложенные варианты ответов не удовлетворяют,
создайте свой вариант запроса в верхней строке.
Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article
Given four integers L, B, l, and b, where L and B denote the dimensions of a bigger rectangle and l and b denotes the dimension of a smaller rectangle, the task is to count the number of smaller rectangles that can be drawn inside a bigger rectangle.
Note: Smaller rectangles can overlap partially.
Examples:
Input: L = 5, B = 3, l = 4, b = 1
Output: 6
Explanation:
There are 6 rectangles of dimension 4 × 1 that can be drawn inside a bigger rectangle of dimension 5 × 3.Input: L = 3, B = 2, l = 2, b = 1
Output: 3
Explanation:
There are 3 rectangles of dimension 3 × 2 can be drawn inside a bigger rectangle of dimension 2 × 1.
Naive Approach: The idea is to iterate over the length L and breadth B of the bigger rectangle to count the number of smaller rectangles of dimension l x b that can be drawn within the range of bigger rectangle. Print the total count after the traversal.
Time Complexity: O(L * B)
Auxiliary Space: O(1)
Efficient Approach: The above problem can be solved using Permutation and Combinations. Below are the steps:
- The total possible values of the length of smaller rectangle l using the length L is given by (L – l + 1).
- The total possible values of the breadth of smaller rectangle b using the length B is given by (B – b + 1).
- Hence, the total number of possible rectangles can be formed is given by:
(L – l + 1) * (B – b + 1)
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using
namespace
std;
int
No_of_rectangles(
int
L,
int
B,
int
l,
int
b)
{
if
((l > L) || (b > B)) {
return
-1;
}
else
{
return
(L - l + 1) * (B - b + 1);
}
}
int
main()
{
int
L = 5, B = 3;
int
l = 4, b = 1;
cout << No_of_rectangles(L, B, l, b);
return
0;
}
Java
import
java.util.*;
class
GFG{
static
int
No_of_rectangles(
int
L,
int
B,
int
l,
int
b)
{
if
((l > L) || (b > B))
{
return
-
1
;
}
else
{
return
(L - l +
1
) * (B - b +
1
);
}
}
public
static
void
main(String[] args)
{
int
L =
5
, B =
3
;
int
l =
4
, b =
1
;
System.out.println(No_of_rectangles(L, B, l, b));
}
}
Python3
def
No_of_rectangles( L, B, l, b):
if
(l > L)
or
(b > B):
return
-
1
;
else
:
return
(L
-
l
+
1
)
*
(B
-
b
+
1
);
if
__name__
=
=
'__main__'
:
L
=
5
B
=
3
l
=
4
b
=
1
print
(No_of_rectangles(L, B, l, b))
C#
using
System;
class
GFG{
static
int
No_of_rectangles(
int
L,
int
B,
int
l,
int
b)
{
if
((l > L) || (b > B))
{
return
-1;
}
else
{
return
(L - l + 1) * (B - b + 1);
}
}
public
static
void
Main(String[] args)
{
int
L = 5, B = 3;
int
l = 4, b = 1;
Console.Write(No_of_rectangles(L, B, l, b));
}
}
Javascript
<script>
function
No_of_rectangles(L, B,
l, b)
{
if
((l > L) || (b > B))
{
return
-1;
}
else
{
return
(L - l + 1) * (B - b + 1);
}
}
let L = 5, B = 3;
let l = 4, b = 1;
document.write(No_of_rectangles(L, B, l, b));
</script>
Time Complexity: O(1)
Auxiliary Space: O(1)
Last Updated :
20 Apr, 2021
Like Article
Save Article
Дана фигура (A) размером M на N.
Дана вторая фигура (B), поменьше, размером K на L.
Нужно определить, сколько максимально фигур B поместятся в фигуре A. Они должны располагаться одна рядом с другой, часть фигур может располагаться вертикально, другая часть горизонтально, что бы занять максимальное возможное пространство в основной фигуре.
Кто то может подсказать что то по этому вопросу?
На данный момент у меня мысли только если:
считать количество прямоугольников, расположенных горизонтально, которые поместятся горизонтально в фигуре, то есть ставим прямоугольник, рядом второй, заполняем линию, дальше снизу ставим еще одну линию, и так до самого низа.
Далее справа, возможно, останется пространство. Проверяем, помещается ли туда прямоугольник вертикально, если да, то заполняем стобец вертикальными прямоугольниками.
В итоге получаем число — сколько поместилось прямоугольников.
Далее повторяем тоже самое, только располагаем изначально прямоугольники вертикально, и если снизу остается пространство, проверяем, помещаются ли туда прямоугольники горизонтально, если да, то заполняем линию. И опять считаем сколько поместилось.
Из двух подсчетом выбираем тот, который дал наибольшый результат.
Вот пример подсчета, который я описал, реализованный на на JavaScript:
function calcFigures(FigureA, FigureB) {
var total1 = 0,
total2 = 0;
(function() {
var figures_per_row = Math.floor(FigureA.width / FigureB.width),
figures_per_col = Math.floor(FigureA.height / FigureB.height),
invers_figures_per_row = 0,
invers_figures_per_col = 0;
if (FigureA.width - (figures_per_row * FigureB.width) >= FigureB.height) {
invers_figures_per_row = Math.floor((FigureA.width - (figures_per_row * FigureB.width)) / FigureB.height);
invers_figures_per_col = Math.floor(FigureA.height / FigureB.width);
}
total1 = (figures_per_row * figures_per_col) + (invers_figures_per_row * invers_figures_per_col);
}());
(function() {
var figures_per_row = Math.floor(FigureA.width / FigureB.height),
figures_per_col = Math.floor(FigureA.height / FigureB.width),
invers_figures_per_row = 0,
invers_figures_per_col = 0;
if (FigureA.width - (figures_per_row * FigureB.height) >= FigureB.width) {
invers_figures_per_row = Math.floor((FigureA.width - (figures_per_row * FigureB.height)) / FigureB.width);
invers_figures_per_col = Math.floor(FigureA.height / FigureB.height);
}
total2 = (figures_per_row * figures_per_col) + (invers_figures_per_row * invers_figures_per_col);
}());
return Math.max(total1, total2);
}
Автор:
Laura McKinney
Дата создания:
9 Апрель 2021
Дата обновления:
12 Май 2023
Сетка 5х5 состоит из 25 отдельных квадратов, которые можно комбинировать для формирования прямоугольников. Подсчет их – это простой вопрос принятия регулярного подхода, который приводит к несколько неожиданному результату.
Начните с квадрата в верхнем левом углу. Подсчитайте количество прямоугольников, которые можно создать, начиная с этого квадрата. Есть пять разных прямоугольников высотой 1, пять разных прямоугольников высотой 2, что приводит к 5 х 5, или 25 разных прямоугольников, начинающихся с этого квадрата.
Переместите один квадрат вправо и посчитайте прямоугольники, начинающиеся здесь. Здесь есть четыре разных прямоугольника с высотой 1, еще четыре с высотой 2, ведущих к 5 x 4, или 20 разных прямоугольников, начинающихся здесь.
Повторите это для следующего квадрата, и вы увидите, что есть 5 х 3 прямоугольника или 15. Вы должны увидеть шаблон уже сейчас. Для любого квадрата количество нарисованных прямоугольников равно их координатному расстоянию от нижнего правого угла.
Заполните сетку количеством прямоугольников каждого квадрата, подсчитав их вручную или выполнив трюк из шага 3. Когда вы закончите, он должен выглядеть примерно так:
25 20 15 10 5 20 16 12 8 4 15 12 9 6 3 10 8 6 4 2 5 4 3 2 1
Сложите числа в сетке, чтобы получить общее количество прямоугольников. Ответ 225, что 5 кубов. Любая сетка размером NxN будет иметь N прямоугольных кубов. См. Ссылки для математического доказательства, если вы не возражаете против небольшой алгебры.
Сообщения без ответов | Активные темы | Избранное
|
Формула для числа прямоугольников (олимпиада Приморского кр) 23.03.2011, 23:00 |
23/03/11 |
Выразите через натуральное число n количество прямоугольников на координатной плоскости со сторонами, параллельными осям и целочисленными вершинами (a, b)
|
|
|
ИСН |
23.03.2011, 23:04 |
||
18/05/06 |
Большинство людей, когда надо узнать число дней с 26-го, например, по 31-е число месяца, считает путём загибания пальцев. Это из той же оперы?
|
||
|
|||
svv |
Re: Формула для числа прямоугольников (олимпиада Приморского кр) 23.03.2011, 23:14 |
||
23/07/08 |
ИСН писал(а): Это из той же оперы? Нет, это из олимпиады Приморского края.
|
||
|
|||
Sonkina |
Re: 23.03.2011, 23:14 |
23/03/11 |
Большинство людей, когда надо узнать число дней с 26-го, например, по 31-е число месяца, считает путём загибания пальцев. Это из той же оперы? Ну а если тоже на пальцах будете? Пальцев не хватит
|
|
|
ИСН |
23.03.2011, 23:17 |
||
18/05/06 |
Вот поэтому-то математики вывели формулу, сколько целых чисел умещается от сих до сих, и ею пользуются.
|
||
|
|||
Sonkina |
Re: 23.03.2011, 23:18 |
23/03/11 |
Вот поэтому-то математики вывели формулу, сколько целых чисел умещается от сих до сих, и ею пользуются. Вы точно эту задачу решаете, а не какую другую?
|
|
|
svv |
Re: Формула для числа прямоугольников (олимпиада Приморского кр) 23.03.2011, 23:27 |
||
23/07/08 |
Sonkina , мне тоже совершенно непонятно, в чем фишка. Вы можете ещё как-то по другому объяснить условие?
|
||
|
|||
Null |
23.03.2011, 23:30 |
||
12/08/10 |
?
|
||
|
|||
Sonkina |
Re: Формула для числа прямоугольников (олимпиада Приморского кр) 23.03.2011, 23:32 |
23/03/11 |
Sonkina , мне тоже совершенно непонятно, в чем фишка. Вы можете ещё как-то по другому объяснить условие? Попробую. На декартовой плоскости дано множество всех целочисленных точек, каждая из координат которых не меньше нуля и не больше n. Сколькими способыми можно выбрать прямоугольник, чтобы его вершины лежали в этом множестве, а стороны были параллельны осям координат? Так понятней? А Вы о чем подумали сначала?
|
|
|
svv |
Re: Формула для числа прямоугольников (олимпиада Приморского кр) 23.03.2011, 23:35 |
||
23/07/08 |
Я всё понял. Надо найти количество всевозможных подпрямоугольников, помещающихся в большой прямоугольник. Их там туча. Отличающиеся только сдвигом считаются всё равно разными. Так? Подумал примерно то же, что и Null .
|
||
|
|||
Sonkina |
Re: 23.03.2011, 23:41 |
23/03/11 |
? А вопросительный знак – это что? Я знаю что восклицательный это факториал, а вопросительный? — Ср мар 23, 2011 23:42:34 — Я всё понял. Надо найти количество всевозможных подпрямоугольников, помещающихся в большой прямоугольник. Их там туча. Отличающиеся только сдвигом считаются всё равно разными. Так? Подумал примерно то же, что и Null . Только не просто большой прямоугольник, а именно большой квадрат.
|
|
|
age |
23.03.2011, 23:52 |
||
17/06/09 |
? Немножко не так. Для каждой пары – координат первой точки подойдут любые пары координат для второй точки. Кроме , т.к. в данном случае прямоугольник будет вырожденный. Также будут вырождаться в отрезок все прямоугольники у которых будет совпадать хоть одна координата. Поэтому их всех надо исключить. Комбинаторная задача. Надо посчитать.
|
||
|
|||
kocuHyc |
Re: 24.03.2011, 00:00 |
03/03/11 |
? Немножко не так. Для каждой пары – координат первой точки подойдут любые пары координат для второй точки. Кроме , т.к. в данном случае прямоугольник будет вырожденный. Также будут вырождаться в отрезок все прямоугольники у которых будет совпадать хоть одна координата. Поэтому их всех надо исключить. Комбинаторная задача. Надо посчитать. http://e-science.ru/forum/index.php?showtopic=29108
|
|
|
Xenia1996 |
Re: 24.03.2011, 01:04 |
01/10/10 |
? Выведенная Вами формула является частным случаем более общей закономерности, согласно которой число прямоугольников (с целочисленными вершинами и соронами, параллельными осям координат) внутри (не обязательно строго внутри) большого прямоугольника n на m равна произведению энного и эмного треугольных чисел. Частный случай подробно рассмотрен в этом детском саду, а задачу, я полагаю, ТС взяла отсюда (год 1990, задача 1).
|
|
|
Модераторы: Модераторы Математики, Супермодераторы
Кто сейчас на конференции |
Сейчас этот форум просматривают: нет зарегистрированных пользователей |
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения |