Latar Belakang
Saya memiliki banyak kotak berbentuk persegi dengan ukuran yang sama, dan karena saya orang yang rapi, saya ingin mengatur semuanya menjadi formasi persegi. Namun, jumlah mereka belum tentu kuadrat sempurna, jadi saya mungkin harus mendekati bentuk persegi. Saya ingin Anda menemukan pengaturan yang paling menyenangkan bagi saya - secara terprogram, tentu saja.
Memasukkan
Input Anda adalah bilangan bulat positif tunggal k
, mewakili jumlah kotak.
Keluaran
Program Anda harus memilih dua bilangan bulat positif m, n
yang m*(n-1) < k ≤ m*n
berlaku. Mereka mewakili lebar dan tinggi dari bentuk persegi besar seperti yang kita atur. Karena kita mencari bentuk yang secara estetika menyenangkan, jumlahnya harus minimal, sehingga bentuknya dekat dengan kotak, dan luasnya dekat . Jika masih ada beberapa kandidat untuk pasangan , pilih salah satu yang lebarnya maksimal.(m - n)2 + (m*n - k)2
k
(m, n)
m
Sekarang, hasil aktual Anda tidak akan menjadi angka m
dan n
. Sebagai gantinya, Anda harus mencetak susunan kotak, menggunakan karakter #
untuk mewakili kotak. Lebih khusus lagi, Anda harus mencetak n-1
baris, yang masing-masing terdiri dari m
karakter #
, dan kemudian satu baris k - m*(n-1)
karakter #
. Perhatikan bahwa output mengandung k
karakter yang tepat #
.
Aturan dan Penilaian
Tidak akan ada spasi putih terdepan atau tertinggal dalam output, kecuali bahwa baris terakhir dapat diisi dengan spasi tambahan m
, jika diinginkan. Mungkin ada satu trailing newline, tetapi tidak ada newlines sebelumnya. Anda dapat menggunakan karakter ASCII yang dapat dicetak sebagai pengganti #
, jika diinginkan.
Anda dapat menulis program lengkap, atau mengembalikan string dari suatu fungsi. Hitungan byte terendah menang, dan celah standar tidak diizinkan.
Uji Kasus
Berikut adalah output yang benar untuk beberapa nilai input.
1
#
2
##
3
##
#
4
##
##
8
###
###
##
13
#####
#####
###
17
######
######
#####
18
#####
#####
#####
###
20
#####
#####
#####
#####
21
######
######
######
###
22
######
######
######
####
23
#####
#####
#####
#####
###