이항계수

시간 제한1초메모리 제한128 MB

요약
10^15 이하인 m이 주어질 때 이항계수 n choose k가 m과 같은 모든 (n,k) 쌍을 정렬된 순서로 찾는 문제입니다.
난이도

보통10점 중 7점

유형
수학, 조합론, 이분 탐색
정답자
아직 제출이 없습니다

문제

이항계수는 서로 다른 nn개의 물건 중에서 순서를 생각하지 않고 kk개를 고르는 조합의 수이며, 다음과 같이 정의된다.

(nk)=n!k! (n−k)!(0≤k≤n)\binom{n}{k} = \frac{n!}{k!\,(n-k)!} \quad (0 \le k \le n)

두 사람이 이항계수 맞히기 게임을 한다. 한 사람이 정수 mm을 말하면, 다른 사람은 (nk)=m\binom{n}{k} = m이 되는 정수 쌍 (n,k)(n, k)를 모두 찾아 답한다. 예를 들어 m=15m = 15이면 (62)\binom{6}{2}, (64)\binom{6}{4}, (151)\binom{15}{1}, (1514)\binom{15}{14}가 모두 1515이므로 (6,2)(6, 2), (6,4)(6, 4), (15,1)(15, 1), (15,14)(15, 14)가 답이 된다.

정수 mm이 주어질 때, (nk)=m\binom{n}{k} = m을 만족하는 모든 쌍 (n,k)(n, k)를 찾는 프로그램을 작성하여라. 입력으로 주어지는 mm에 대해 조건을 만족하는 이항계수는 적어도 하나 존재한다.

입력

첫째 줄에 정수 mm이 주어진다. (2≤m≤10152 \le m \le 10^{15})

출력

첫째 줄에 (nk)=m\binom{n}{k} = m을 만족하는 쌍 (n,k)(n, k)의 개수를 출력한다. 둘째 줄부터 한 줄에 하나씩 nn과 kk를 공백으로 구분하여 출력한다. 출력 순서는 nn이 증가하는 순서로 하고, nn이 같으면 kk가 증가하는 순서로 한다.

예제1

  1. 예제 1

    입력
    15
    
    예상 출력
    4
    6 2
    6 4
    15 1
    15 14