sfondo
Ho un sacco di scatole quadrate di uguali dimensioni e, dato che sono una persona ordinata, voglio sistemarle tutte in una formazione quadrata. Tuttavia, il loro numero non è necessariamente un quadrato perfetto, quindi potrei dover approssimare la forma quadrata. Voglio che tu mi trovi la sistemazione esteticamente più piacevole - programmaticamente, ovviamente.
Ingresso
Il tuo input è un singolo intero positivo k
, che rappresenta il numero di caselle.
Produzione
Il tuo programma sceglierà due numeri interi positivi m, n
che m*(n-1) < k ≤ m*n
valgono. Rappresentano la larghezza e l'altezza della grande forma quadrata che stiamo organizzando. Poiché stiamo cercando forme esteticamente gradevoli, la quantità deve essere minima, in modo che la forma sia vicina a un quadrato e la sua area sia vicina . Se ci sono ancora diversi candidati per la coppia , scegli quello in cui la larghezza è massima.(m - n)2 + (m*n - k)2
k
(m, n)
m
Ora, l'output effettivo non deve essere i numeri m
e n
. Invece, dovrai stampare la disposizione delle scatole, usando il personaggio #
per rappresentare una scatola. Più specificamente, dovrai stampare n-1
righe, ognuna delle quali è composta da m
caratteri #
, quindi una riga di k - m*(n-1)
caratteri #
. Si noti che l'output contiene esattamente k
caratteri #
.
Regole e punteggio
Non devono esserci spazi bianchi iniziali o finali nell'output, tranne che l'ultima riga può essere riempita con spazi finali di lunghezza m
, se desiderato. Potrebbe esserci una nuova riga finale, ma nessuna riga precedente. È possibile utilizzare qualsiasi carattere ASCII stampabile al posto di #
, se lo si desidera.
È possibile scrivere un programma completo o restituire una stringa da una funzione. Vince il conteggio di byte più basso e non sono consentite scappatoie standard.
Casi test
Ecco gli output corretti per alcuni valori di input.
1
#
2
##
3
##
#
4
##
##
8
###
###
##
13
#####
#####
###
17
######
######
#####
18
#####
#####
#####
###
20
#####
#####
#####
#####
21
######
######
######
###
22
######
######
######
####
23
#####
#####
#####
#####
###