배경
나는 같은 크기의 정사각형 모양의 상자가 많이 있으며, 깔끔한 사람이기 때문에 모두 사각형 모양으로 배열하고 싶습니다. 그러나 그 숫자가 반드시 완벽한 정사각형은 아니므로 정사각형 모양과 비슷해야합니다. 물론 프로그램 적으로 가장 미학적으로 즐거운 배치를 찾아 주길 바랍니다.
입력
입력은 k
상자 수를 나타내는 단일 양의 정수 입니다.
산출
프로그램 m, n
은 m*(n-1) < k ≤ m*n
보유 할 양의 정수 두 개를 선택해야합니다 . 그것들은 우리가 배열하는 큰 사각형 모양의 너비와 높이를 나타냅니다. 우리는 쾌적하게 만족스러운 모양을 찾고 있기 때문에 수량 이 최소가되어 모양이 정사각형에 가까우며 면적이에 가까워집니다 . 쌍에 대한 후보가 여전히 여러 개인 경우 너비 가 최대 인 후보를 선택하십시오 .(m - n)2 + (m*n - k)2
k
(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
#####
#####
#####
#####
###