초고층 빌딩 MinatoHarukas

면접 대비

시간 제한2초메모리 제한512 MB

요약
각 예산 b에 대해 합이 b가 되는 가장 긴 연속한 양의 정수 구간을 찾아 시작 층과 층 수를 출력한다.
난이도

보통10점 중 6점

유형
수학, 투 포인터, 정수론, 구현
정답자
아직 제출이 없습니다

문제

Port 씨는 10억 개의 층을 가진 새 초고층 빌딩 MinatoHarukas의 한 층 이상을 임대하는 사업을 시작하려 한다. 그는 수직으로 인접한 창문에 광고를 최대한 많이 걸고 싶으므로, 수직으로 인접한 층을 가능한 많이 임대하려 한다. 한 층의 임대료는 층 번호에 비례한다. 즉, n층의 월 임대료는 1층 임대료의 n배이다. 여기서 1층은 미국식으로 지상층을 뜻하며, 지하층은 임대 대상이 아니다. Port 씨를 도와 수직으로 인접한 층들 중 월 임대료의 합이 그의 예산과 정확히 같아야 한다는 조건을 만족하는 층 구간을 계산하는 프로그램을 작성하시오.

예를 들어 예산이 1층 임대료를 1단위로 할 때 15단위라면, 가능한 임대 계획은 1+2+3+4+5, 4+5+6, 7+8, 15로 네 가지이다. 모두 합이 15이다. 이 예에서 임대 층 수가 최대인 계획은 1+2+3+4+5, 즉 1층부터 5층까지의 임대이다.

입력

입력은 여러 데이터셋으로 이루어지며, 각 데이터셋은 다음 형식이다.

b

데이터셋은 한 줄로 이루어지고, 1층 임대료의 배수로 나타낸 Port 씨의 예산 b가 주어진다. b는 1 < b < 10^9을 만족하는 양의 정수이다.

입력의 끝은 0을 포함한 줄로 표시된다. 데이터셋의 수는 1000을 넘지 않는다.

출력

각 데이터셋에 대해, 임대료가 Port 씨의 예산과 정확히 같은 수직으로 인접한 층 중 층 수가 최대인 계획을 나타내는 양의 정수 두 개를 한 줄에 출력한다. 첫 번째는 가장 낮은 층 번호, 두 번째는 층 수이다.

예제1

  1. 예제 1

    입력
    15
    16
    2
    3
    9699690
    223092870
    847288609
    900660121
    987698769
    999999999
    0
    
    예상 출력
    1 5
    16 1
    2 1
    1 2
    16 4389
    129 20995
    4112949 206
    15006 30011
    46887 17718
    163837 5994