Фон
У мене є купа ящиків квадратної форми однакових розмірів, і оскільки я охайна людина, я хочу розставити їх усіх у квадратну формацію. Однак їх кількість не обов'язково є ідеальним квадратом, тому, можливо, мені доведеться наблизити форму квадрата. Я хочу, щоб ти знайшов мені найестетичнішу композицію - звичайно програмно.
Вхідні дані
Ваше введення - це одне додатне ціле число 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
#####
#####
#####
#####
###