프로그램 명: koi_number
제한시간: 1 초
KOI 보안회사에서는 자동으로 비밀번호를 만드는 시스템을 연구하고 있다. 주어진 하나의 양의 정수에 대하여 다음의 원칙에 따라 두 수를 만들어 비밀번호를 정하려고 한다.
하나의 주어진 양의 정수 A 에 대하여 비밀번호를 위한 두 수를 만드는 방법은 다음과 같다.
- A 의 이진수 표현에서 나오는 1의 개수 x 를 찾는다.
- A 보다 작은수 중에서 그 수의 이진수 표현에서 1의 개수가 x 와 같고 A 에 가장 가까운 수를 하나 찾는다.
- A 보다 큰수 중에서 그 수의 이진수 표현에서 1의 개수가 x 와 같고 A 에 가장 가까운 수를 하나 찾는다.
예를 들어, 주어진 수 A 가 43이면, 이 수의 이진수 표현은 1010112 이다. 이 이진수는 1의 개수가 4이다. 그러므로 43보다 작고 43에 가장 가까우며 이진수 표현에서 1의 개수가 4인 수는 39=1001112이다. 또한 43보다 크고 43에 가장 가까우며 이진수 표현에서 1의 개수가 4인 수는 45=1011012이다.
이 두 수를 찾아 출력하는 프로그램을 작성하시오. 프로그램의 실행시간은 1초를 넘을 수 없다. 부분 점수는 없다.
입력 형식
입력의 첫 번째 줄에는 하나의 양의 정수 A 가 주어진다. 단, 1 <= A <= 1018이다.출력 형식
주어진 수 보다 작은 수 중에서 이진수의 1의 개수가 같으며 가장 가까운 수와, 주어진 수 보다 큰 수 중에서 이진수의 1의 개수가 같으며 가장 가까운 수를 한 줄에 빈칸을 사이에 두고 출력한다. 만약 그러한 수가 존재하지 않으면 그 수에 대해서는 0 을 출력한다.입력과 출력의 예
입력 43 출력 39 45 입력 7 출력 0 11
출처:koi 2011 지역본선 고등 2
'Algorithm > Dovelet' 카테고리의 다른 글
[더블릿 - 8] 해밍 경로/koi_path (0) | 2012.06.12 |
---|---|
[더블릿 - 7] 경로 구하기/hamming_distance (0) | 2012.06.08 |
[더블릿 - 5] 최대값/koi_max (0) | 2011.12.22 |
[더블릿 - 4] 대표 자연수/natural (0) | 2011.12.21 |
[더블릿 - 3] 색상 환/color_circle (0) | 2011.12.21 |