약 팔기
시간 제한1초메모리 제한512 MB
N이 주어지면 b² ≥ N인 최소 b와 c = ceil(N/b)를 구해, 1이 b-1개, b가 c개인 정해진 배치를 출력한다.
문제
약장수 강욱이는 오늘도 약을 판다. 화려한 언변으로 손님을 끌어모으는 강욱이에게 고민거리가 하나 있다.
단골 손님 동규는 매일 약을 알 이상 알 이하의 임의의 개수만큼 주문한다. 주문을 받은 강욱이가 약 상자에서 한 알씩 세어 꺼내다 보니 시간이 오래 걸렸고, 답답해진 동규는 매번 화를 냈다.
강욱이는 약을 빨리 건네줄 방법을 이렇게 정리했다. 여러 약 봉지에 알약을 나눠 담아 일렬로 늘어놓은 뒤, 동규가 알을 달라고 하면 합이 정확히 알인 연속한 구간의 봉지를 한 번에 집어 준다.
판매대에는 봉지를 최대 개까지만 일렬로 올려놓을 수 있다. 동규가 이상 이하의 어떤 수를 불러도 대응할 수 있도록 봉지를 배치하자.
입력
첫 번째 줄에 동규가 한 번에 주문하는 약의 최대 개수 ()이 주어진다.
출력
첫 번째 줄에 봉지의 개수 ()를 출력한다. 두 번째 줄에는 왼쪽부터 순서대로 각 봉지에 담긴 약의 수를 공백 하나로 구분해 출력한다. 각 봉지에는 알 이상 알 이하의 약이 들어 있어야 하고, 이상 이하의 모든 수는 연속한 구간의 봉지 합으로 만들어져야 한다.
조건을 만족하는 배치는 여러 가지라서, 채점은 다음 규칙으로 만든 배치 하나만 정답으로 인정한다.
- 는 을 만족하는 가장 작은 자연수다.
- 이다.
- 이고, 왼쪽부터 약이 알 든 봉지를 개 놓은 다음 약이 알 든 봉지를 개 놓는다.