페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#8067

2의 거듭제곱의 합 2 1s 1024MB

문제

주어진 양의 정수 N에 대해 2^x + 2^y = N인 음이 아닌 정수 xy를 출력하는 프로그램을 작성하시오. 단, x\le y를 만족해야 한다.

그런 (x,y)가 존재하지 않는다면, (x,y)가 존재하는 N과의 차이가 가장 작은 수로 N을 대체한 뒤 위와 같은 규칙으로 (x,y)를 고른다. 대체할 수 있는 수가 여러 가지라면 그중 가장 작은 것으로 대체한다. 이때 (x,y)가 유일하게 결정됨을 증명할 수 있다.


입력

첫 줄에 정수 N이 주어진다. ( 1≤N≤10^{18})

주어지는 N에 대해 가능한 x\le y(x,y) 순서쌍이 존재함이 보장되지 않는다.


출력

첫 줄에 N에 대해 2^x + 2^y = N인 음이 아닌 정수 xy를 출력한다.


예제 #1

1
0 0

예제 #2

7
1 2

출처

송도고 코드마스터 2023 D2번
로그인해야 코드를 작성할 수 있어요.