만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

xx와 x+1x+1의 차이

면접 대비

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

요약
양의 정수 x가 주어질 때, x 이하의 k 중 x를 k로 나눈 몫과 x+1을 k로 나눈 몫이 다른 값을 모두 찾습니다.
난이도

쉬움10점 중 3점

유형
정수론, 수학
정답자
아직 제출이 없습니다

문제

초등학생인 철수와 영희는 최근 나눗셈을 배우고 있습니다. 어느 날 영희에게 이런 궁금증이 생겼습니다.

  • 998998을 kk로 나눈 몫과 999999를 kk로 나눈 몫이 다르게 되는 kk는 얼마나 많을까?

영희는 수학을 잘하는 철수에게 물어봤지만, 철수도 그 답을 몰랐습니다. 이제 여러분이 철수와 영희의 궁금증을 해결해 줍시다.

여러분은 다음 문제를 해결해야 합니다.

  • 양의 정수 xx가 주어질 때, ⌊xk⌋\left\lfloor{\frac{{x}}{{k}}}\right\rfloor과 ⌊x+1k⌋\left\lfloor{\frac{{x+1}}{{k}}}\right\rfloor의 값이 다르게 되는 xx 이하의 양의 정수 kk를 모두 찾아 주세요.†^\dagger

†^\dagger 두 양의 정수 aa와 bb가 주어졌을 때, ⌊ab⌋\left\lfloor{\frac{{a}}{{b}}}\right\rfloor는 aa를 bb로 나눈 몫을 뜻합니다.

입력

한 줄에 양의 정수 xx가 주어집니다. (1≤x≤10121 \le x \le 10^{12})

출력

한 줄에 문제의 정답이 되는 kk의 값을 작은 것부터 순서대로 출력합니다.

모든 입력에 대해 출력해야 하는 값의 개수가 10 00010\,000개를 넘지 않음을 증명할 수 있습니다.

힌트

입력과 출력이 32비트 정수의 최댓값을 넘을 수 있으니 주의하세요. 값을 저장할 때는 다음 자료형을 사용하는 것을 권장합니다.

  • C/C++: long long
  • Java: long
  • Python: int (별도의 처리를 할 필요가 없습니다.)
  • 이외의 언어: 해당 언어의 레퍼런스를 참고합니다.

예제1

  1. 예제 1

    입력
    998
    
    예상 출력
    1 3 9 27 37 111 333