Фон
У меня есть куча коробок квадратной формы одинакового размера, и, поскольку я аккуратный человек, я хочу собрать их все в квадратную форму. Однако их число не обязательно является идеальным квадратом, поэтому мне, возможно, придется приблизиться к квадратной форме. Я хочу, чтобы вы нашли для меня наиболее эстетически приятную договоренность - программно, конечно.
вход
Ваш ввод представляет собой одно положительное целое число k, представляющее количество блоков.
Выход
Ваша программа должна выбрать два положительных целых числа m, n, которые m*(n-1) < k ≤ m*nсохраняются. Они представляют ширину и высоту большой квадратной формы, которую мы размещаем. Поскольку мы ищем эстетически приятные формы, количество должно быть минимальным, чтобы форма была близка к квадрату, а ее площадь была близка . Если для пары еще есть несколько кандидатов , выберите тот, где ширина максимальна.(m - n)2 + (m*n - k)2k(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
#####
#####
#####
#####
###