Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике

wewenami2
Дата: 22.02.2018 06:13:54
Здравствуйте, нужен алгоритм вычисляющий ширину квадрата для размещения N-ого количества квадратов в прямоугольнике, чтобы они не выходили за пределы прямоугольника. Как на картинке
Gennadiy Usov
Дата: 22.02.2018 06:49:10
У прямоугольника горизонталь А, а вертикаль В.
Имеем множество квадратиков в прямоугольнике, причем количество горизонтальных рядов равно К, а количество вертикальных рядов равно М.
Тогда А / М = В / К.
Или К = В / А х М
Для всех целых М (М>0) ищется К, которое должно быть целым (остаток = 0).

Таких вариантов будет несколько, так как найденное решение можно делить еще на мелкие квадратики до бесконечности.
Gennadiy Usov
Дата: 22.02.2018 06:54:33
Gennadiy Usov
У прямоугольника горизонталь А, а вертикаль В.
Имеем множество квадратиков в прямоугольнике, причем количество горизонтальных рядов равно К, а количество вертикальных рядов равно М.
Тогда А / М = В / К.
Или К = В / А х М
Для всех целых М (М>0) ищется К, которое должно быть целым (остаток = 0).

Таких вариантов будет несколько, так как найденное решение можно делить еще на мелкие квадратики до бесконечности.

Забыл про значение N.
При дроблении квадратиков до бесконечности их количество сравнивается с N.
Решения может и не быть.
Тогда накладываются ограничения на А и В. (которые сидят на трубе)
MBo
Дата: 22.02.2018 07:05:34
wewenami2,

Не указано, что дано, кроме количества N
Gennadiy Usov
Дата: 22.02.2018 07:28:06
А есть еще интересная задача: найти прямоугольники для N квадратов.
В прямоугольнике квадраты выстраиваются в ряды по вертикали, и их общее количество получается как произведение количества рядов на количество вертикалей.
Следовательно, надо для величины N найти множители.
Эти множители определяют количества рядов и вертикалей.
wewenami2
Дата: 22.02.2018 07:31:09
MBo,

Дано ширина, высота прямоугольника и количество квадратов которых нужно разместить.
int rect_w = 300; // ширина прямоугольника
int rect_h = 200; // высота прямоугольника
int sqr_count = 6; // Кол-во квадратов
int sqr_side = ? // Нужно получить длину стороны квадрата
Gennadiy Usov
Дата: 22.02.2018 07:41:15
wewenami2
MBo,

Дано ширина, высота прямоугольника и количество квадратов которых нужно разместить.
int rect_w = 300; // ширина прямоугольника
int rect_h = 200; // высота прямоугольника
int sqr_count = 6; // Кол-во квадратов
int sqr_side = ? // Нужно получить длину стороны квадрата

Подставьте эти данные в уравнение 21210127 а далее методом перебора: 1 - 1,5, 2 - 3
2 х 3 = 6
mayton
Дата: 22.02.2018 08:09:37
Количество квадратов сбивает с толку. Без него задача красиво решалась бы через НОД.
wewenami2
Дата: 22.02.2018 08:21:39
Gennadiy Usov,

Не понял, можно пример в коде?
Dima T
Дата: 22.02.2018 08:29:13
wewenami2
Здравствуйте, нужен алгоритм вычисляющий ширину квадрата для размещения N-ого количества квадратов в прямоугольнике, чтобы они не выходили за пределы прямоугольника. Как на картинке

wewenami2
Дано ширина, высота прямоугольника и количество квадратов которых нужно разместить.
int rect_w = 300; // ширина прямоугольника
int rect_h = 200; // высота прямоугольника
int sqr_count = 6; // Кол-во квадратов
int sqr_side = ? // Нужно получить длину стороны квадрата



if(rect_w * rect_h >= sqr_count) {
   sqr_side = 1;
} else {
  // Задача не имеет решения
}

Решение удовлетворяет всем поставленным условиям