package
0.0.0-20241221191246-b80a13d7bbe0
Repository: https://github.com/yvv4git/go-algorithms.git
Documentation: pkg.go.dev

# README

492. Construct the Rectangle

Level - easy

Task

A web developer needs to know how to design a web page's size. So, given a specific rectangular web page’s area, your job by now is to design a rectangular web page, whose length L and width W satisfy the following requirements:

  1. The area of the rectangular web page you designed must equal to the given target area.
  2. The width W should not be larger than the length L, which means L >= W.
  3. The difference between length L and width W should be as small as possible.

Return an array [L, W] where L and W are the length and width of the web page you designed in sequence.

Объяснение

Дана площадь прямоугольника, которую нужно представить в виде произведения двух целых чисел, представляющих собой длину и ширину прямоугольника. При этом длина должна быть больше или равна ширине, и разница между длиной и шириной должна быть минимальной.

Найти такие два целых числа, которые удовлетворяют условию и представляют собой длину и ширину прямоугольника.

Пример:

  • Вход: 37
  • Выход: [37, 1]

Объяснение:
Площадь прямоугольника равна 37. Единственные два целых числа, которые умножаются друг на друга и дают 37, это 37 и 1. Так как 37 больше 1, то длина равна 37, а ширина равна 1.

Как можно решить задачу:

  1. Начинаем с корня квадратного из площади и идем вниз, проверяя, делится ли площадь на текущее число.
  2. Если делится, то проверяем, является ли результат деления целым числом.
  3. Если да, то это и есть искомые длина и ширина.
  4. Если нет, продолжаем поиск.

Example 1:

Input: area = 4
Output: [2,2]
Explanation: The target area is 4, and all the possible ways to construct it are [1,4], [2,2], [4,1].
But according to requirement 2, [1,4] is illegal; according to requirement 3,  [4,1] is not optimal compared to [2,2]. So the length L is 2, and the width W is 2.

Example 2:

Input: area = 37
Output: [37,1]

Example 3:

Input: area = 122122
Output: [427,286]

Constraints:

  • 1 <= area <= 10^7