Решить задачу на php "Прямоугольник"
Ответы (1 шт):
Автор решения: Евгений Тихии
→ Ссылка
Ну реально было сложновато.. (теорема Пика, если кому интересно)
/**
* Side-horizontal * side-vertical + All-nodes - 1 = Rectanle Lines (3 * 3 + 4 - 1 = 12)
* Side-horizontal * side-vertical = Rectanle Lines + 1 - All-nodes (3 * 3 = 12 + 1 - 4)
*
* @param int $K | Nodes
* @param int $N | Lines
*
* @return array
*/
function getRectangleSize (int $K, int $N): array {
$rectangleSize = $N + 1 - $K;
$rectangleSide = [];
for ($side = 2; $side < $rectangleSize; $side++) {
if (is_int ($rectangleSize / $side)) {
$rectangleSide['first'] = $side;
$rectangleSide['second'] = $rectangleSize / $side;
if ($K == (($rectangleSide['first'] - 1) * ($rectangleSide['second'] - 1))) {
return $rectangleSide;
}
}
}
}
echo '<pre>';
var_dump (getRectangleSize (6, 17));
var_dump (getRectangleSize (8, 22));
var_dump (getRectangleSize (12, 31));
var_dump (getRectangleSize (14, 37));
Выход:
array(2) {
["first"]=>
int(3)
["second"]=>
int(4)
}
array(2) {
["first"]=>
int(3)
["second"]=>
int(5)
}
array(2) {
["first"]=>
int(4)
["second"]=>
int(5)
}
array(2) {
["first"]=>
int(3)
["second"]=>
int(8)
}
