배경
나는 같은 크기의 정사각형 모양의 상자가 많이 있으며, 깔끔한 사람이기 때문에 모두 사각형 모양으로 배열하고 싶습니다. 그러나 그 숫자가 반드시 완벽한 정사각형은 아니므로 정사각형 모양과 비슷해야합니다. 물론 프로그램 적으로 가장 미학적으로 즐거운 배치를 찾아 주길 바랍니다.
입력
입력은 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
#####
#####
#####
#####
###