Logo
(追記) (追記ここまで)

2464번 - 비밀번호

시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 128 MB263463655129.465%

문제

KOI 보안회사에서는 자동으로 비밀번호를 만드는 시스템을 연구하고 있다. 주어진 하나의 양의 정수에 대하여 다음의 원칙에 따라 두 수를 만들어 비밀번호를 정하려고 한다.

하나의 주어진 양의 정수 A에 대하여 비밀번호를 위한 두 수를 만드는 방법은 다음과 같다.

  1. A의 이진수 표현에서 나오는 1의 개수 x를 찾는다.
  2. A보다 작은 수 중에서 그 수의 이진수 표현에서 1의 개수가 x와 같고 A에 가장 가까운 수를 하나 찾는다.
  3. A보다 큰 수 중에서 그 수의 이진수 표현에서 1의 개수가 x와 같고 A에 가장 가까운 수를 하나 찾는다.

예를 들어, 주어진 수 A가 43이면, 이 수의 이진수 표현은 101011(2)이다. 이 이진수는 1의 개수가 4이다. 그러므로 43보다 작고 43에 가장 가까우며 이진수 표현에서 1의 개수가 4인 수는 39=100111(2)이다. 또한 43보다 크고 43에 가장 가까우며 이진수 표현에서 1의 개수가 4인 수는 45=101101(2)이다.

이 두 수를 찾아 출력하는 프로그램을 작성하시오.

입력

입력의 첫 번째 줄에는 하나의 양의 정수 A가 주어진다. 단, 1 ≤ A ≤ 1018이다.

출력

주어진 수 보다 작은 수 중에서 이진수의 1의 개수가 같으며 가장 가까운 수와, 주어진 수 보다 큰 수 중에서 이진수의 1의 개수가 같으며 가장 가까운 수를 한 줄에 빈칸을 사이에 두고 출력한다. 만약 그러한 수가 존재하지 않으면 그 수에 대해서는 0을 출력한다.

제한

예제 입력 1

43

예제 출력 1

39 45

예제 입력 2

7

예제 출력 2

0 11

힌트

출처

Olympiad > 한국정보올림피아드 > 한국정보올림피아드시.도지역본선 > 지역본선 2011 > 고등부 2번

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /