점수 해킹

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

요약
0점에서 시작해 매 턴 a점 또는 b점을 더하거나 점수를 두 배로 만들 수 있고, 최종 점수가 n+a 미만이면서 두 배 사용 횟수가 전체 턴의 10% 이하여야 한다. 최소 턴 수를 구한다.
난이도

보통10점 중 6점

유형
동적 계획법, 그리디, 수학, 구현
정답자
아직 제출이 없습니다

문제

0점에서 시작해 매 턴 점수를 획득하는 게임이 있다. 각 턴에서 플레이어가 이기면 a점을 얻고, 지면 b점을 얻는다. 점수의 총합이 n점 이상이면 게임이 끝난다.

포스텍의 한 학생이 이 게임을 해킹했다. 그래서 각 턴에서 이길지 질지 마음대로 정할 수 있다. 심지어 원하는 턴에서 a점이나 b점을 더하는 대신 점수를 두 배로 만드는 것도 가능하다. 예를 들어 a가 3, b가 2이고 현재 점수가 10일 때, 다음 턴이 끝난 뒤 가능한 점수는 12, 13, 20이다. 하지만 학생이 n+a점 이상의 점수로 게임을 끝내거나, 각 턴이 끝났을 때 점수를 두 배로 올린 턴이 전체 턴의 10%를 초과하면 학생은 게임 운영진의 의심을 받아 게임에서 퇴출된다.

이 학생이 운영진의 의심을 받지 않고 게임을 끝내는 데 필요한 최소 턴 수를 구하라.

입력

n, a, b 세 정수가 띄어쓰기를 사이에 두고 주어진다. (1 ≤ n ≤ 500, 1 ≤ b ≤ a ≤ 100)

출력

학생이 운영진의 의심을 받지 않고 게임을 끝내는 데 필요한 최소 턴 수를 출력한다.

힌트

첫 번째 예제에서는 매 턴 4점씩 올리면 세 턴 만에 10점을 넘길 수 있다.

두 번째 예제에서는 일곱 턴 동안 3점씩, 두 턴 동안 2점씩 올린 뒤 마지막 턴에서 점수를 두 배로 만들면 10턴 만에 50점에 도달한다.

예제에 제시된 방법이 최소 턴 수를 얻는 유일한 방법은 아니다.

예제2

  1. 예제 1

    입력
    10 4 3
    
    예상 출력
    3
    
  2. 예제 2

    입력
    50 3 2
    
    예상 출력
    10