Contexte
J'ai un tas de boîtes de forme carrée de taille égale, et comme je suis une personne soignée, je veux les disposer toutes en une formation carrée. Cependant, leur nombre n'est pas nécessairement un carré parfait, donc je devrai peut-être approximer la forme carrée. Je veux que vous me trouviez l'arrangement le plus agréable sur le plan esthétique - par programmation, bien sûr.
Contribution
Votre entrée est un seul entier positif k
, représentant le nombre de cases.
Production
Votre programme doit choisir deux entiers positifs m, n
tels que ceux-ci sont m*(n-1) < k ≤ m*n
valables. Ils représentent la largeur et la hauteur de la grande forme carrée que nous organisons. Puisque nous recherchons des formes esthétiquement agréables, la quantité doit être minimale, de sorte que la forme soit proche d'un carré et que sa surface soit proche . S'il y a encore plusieurs candidats pour la paire , choisissez celui dont la largeur est maximale.(m - n)2 + (m*n - k)2
k
(m, n)
m
Maintenant, votre sortie réelle ne doit pas être les chiffres m
et n
. Au lieu de cela, vous devez imprimer la disposition des boîtes, en utilisant le caractère #
pour représenter une boîte. Plus précisément, vous devez imprimer des n-1
lignes, chacune composée de m
caractères #
, puis une ligne de k - m*(n-1)
caractères #
. Notez que la sortie contient exactement des k
caractères #
.
Règles et notation
Il ne doit y avoir aucun espace de début ou de fin dans la sortie, sauf que la dernière ligne peut être complétée avec des espaces de fin pour être de longueur m
, si vous le souhaitez. Il peut y avoir une nouvelle ligne de fin, mais aucune nouvelle ligne précédente. Vous pouvez utiliser n'importe quel caractère ASCII imprimable à la place de #
, si vous le souhaitez.
Vous pouvez écrire un programme complet ou renvoyer une chaîne à partir d'une fonction. Le nombre d'octets le plus bas gagne et les failles standard sont interdites.
Cas de test
Voici les sorties correctes pour quelques valeurs d'entrée.
1
#
2
##
3
##
#
4
##
##
8
###
###
##
13
#####
#####
###
17
######
######
#####
18
#####
#####
#####
###
20
#####
#####
#####
#####
21
######
######
######
###
22
######
######
######
####
23
#####
#####
#####
#####
###