수 맞히기 게임

NO 답변은 a유로, YES 답변은 b유로 내는 부분집합 질문으로 1부터 n까지 숨겨진 정수를 찾고 최악의 총 지불액을 최소화합니다.

어려움8동적 계획법이분 탐색수학아직 제출이 없습니다시간 제한1초메모리 제한256 MB

문제

존과 조지가 다음 게임을 한다. 존은 집합 An={1,2,3,,n}A_n = \{1, 2, 3, \ldots, n\}에서 정수 xx 하나를 고르고, 조지는 그 xx가 무엇인지 알아내야 한다. 게임은 1,2,3,1, 2, 3, \ldots번째 차례로 이어진다. kk번째 차례에 조지가 AnA_n의 부분집합 BkB_k를 고르면, 존은 xxBkB_k에 들어 있으면 YES, 아니면 NO라고 답한다. 답이 NO면 조지는 존에게 aa유로를 내고, YES면 bb유로를 낸다.

조지는 답을 하나 들을 때마다 그 답을 보고 다음 부분집합을 정할 수 있다. xx가 무엇이든 반드시 알아내는 전략 중에서 조지가 내는 금액의 최댓값이 가장 작은 전략을 찾고, 그때의 금액을 구하는 프로그램을 작성하라.

입력

첫 줄에 정수 nn, aa, bb가 공백으로 구분되어 주어진다.

출력

조지가 내야 하는 최소 금액을 정수 하나로 출력한다.

제한

  • 1<n<10181 < n < 10^{18}
  • 0<a,b<10000 < a, b < 1\,000

힌트

n=5n = 5, a=1a = 1, b=2b = 2이면 조지는 4유로로 xx를 알아낼 수 있다.

조지가 먼저 B1={1,2}B_1 = \{1, 2\}를 고른다.

  • 존이 YES라고 답하면 조지는 2유로를 내고 B2={1}B_2 = \{1\}을 고른다. 다시 YES면 2유로를 더 내고 게임이 끝난다(x=1x = 1). NO면 1유로를 더 내고 게임이 끝난다(x=2x = 2).
  • 존이 NO라고 답하면 조지는 1유로를 내고 B2={3}B_2 = \{3\}을 고른다. YES면 2유로를 더 내고 게임이 끝난다(x=3x = 3). NO면 1유로를 더 내고 B3={4}B_3 = \{4\}를 고른다. YES면 2유로를 더 내고 게임이 끝난다(x=4x = 4). NO면 1유로를 더 내고 게임이 끝난다(x=5x = 5).

가장 많이 내는 경우는 x=1x = 1일 때와 x=4x = 4일 때이고, 두 경우 모두 4유로다.