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