Фон
У меня есть куча коробок квадратной формы одинакового размера, и, поскольку я аккуратный человек, я хочу собрать их все в квадратную форму. Однако их число не обязательно является идеальным квадратом, поэтому мне, возможно, придется приблизиться к квадратной форме. Я хочу, чтобы вы нашли для меня наиболее эстетически приятную договоренность - программно, конечно.
вход
Ваш ввод представляет собой одно положительное целое число k
, представляющее количество блоков.
Выход
Ваша программа должна выбрать два положительных целых числа m, n
, которые m*(n-1) < k ≤ m*n
сохраняются. Они представляют ширину и высоту большой квадратной формы, которую мы размещаем. Поскольку мы ищем эстетически приятные формы, количество должно быть минимальным, чтобы форма была близка к квадрату, а ее площадь была близка . Если для пары еще есть несколько кандидатов , выберите тот, где ширина максимальна.(m - n)2 + (m*n - k)2
k
(m, n)
m
Теперь ваш фактический вывод не должен быть числами m
и n
. Вместо этого вы должны напечатать расположение ящиков, используя символ #
для представления ящика. Более конкретно, вы должны напечатать n-1
строки, каждая из которых состоит из m
символов #
, а затем одна строка k - m*(n-1)
символов #
. Обратите внимание, что вывод содержит ровно k
символы #
.
Правила и оценки
В выходных данных не должно быть начальных или конечных пробелов, за исключением того, что последняя строка может быть дополнена конечными пробелами, чтобы иметь длину m
, если это необходимо. Может быть один завершающий символ новой строки, но нет предшествующих символов новой строки. При #
желании вы можете использовать любой печатный символ ASCII вместо .
Вы можете написать полную программу или вернуть строку из функции. Побеждает меньшее количество байтов, и стандартные лазейки запрещены.
Тестовые случаи
Вот правильные выходы для нескольких входных значений.
1
#
2
##
3
##
#
4
##
##
8
###
###
##
13
#####
#####
###
17
######
######
#####
18
#####
#####
#####
###
20
#####
#####
#####
#####
21
######
######
######
###
22
######
######
######
####
23
#####
#####
#####
#####
###