[BOJ 1519] 부분 문자열 뽑기 게임

View as PDF

Submit solution

Points: 3
Time limit: 2.0s
Memory limit: 256M

Problem types
Allowed languages
Assembly, Awk, C, C++, Java, Pascal, Perl, Python, Sed, Text

게임 판에 어떤 자연수 N이 쓰여 있을 때, 두 명의 플레이어가 턴을 번갈아가면서 이 게임을 하려고 한다.</p>

매 턴이 돌아올때마다, 플레이어는 현재 게임 판에 쓰여 있는 수의 진 부분 문자열인 양의 정수 M을 고를 수 있다. 그리고 나서 원래 수에서 M을 뺀다. 진 부분 문자열이란 자기 자신을 제외한 모든 연속된 부분 문자열을 말한다.

예를 들어, 현재 게임 판에 2309가 써있을 때, 플레이어는 2, 3, 9, 23, 30, 230, 309를 고를 수 있다. 2를 고르면, 현재 게임 판에 쓰여 있는 수는 2307이 되고, 3은 2306, ..............., 309는 2000이 된다.

만약에 플레이어가 부분 문자열을 고를 수 없게되면, 게임에서 지게된다.

입력으로 현재 게임 판에 쓰여 있는 수 N이 주어졌을 때, 플레이어 1(첫 턴을 가지는 플레이어)이 이기기 위해서 골라야 하는 수를 출력하는 프로그램을 작성하시오. 만약 여러 가지 경우가 있다면, 가장 작은 것을 출력하고, 이길 수 없다면 -1을 출력한다.

입력 형식

첫째 줄에 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.

출력 형식

정답을 출력한다.

예제 입력 1

5

예제 출력 1

-1

예제 입력 2

10

예제 출력 2

1

예제 입력 3

17

예제 출력 3

-1

예제 입력 4

239

예제 출력 4

9

예제 입력 5

566

예제 출력 5

66

예제 입력 6

23900

예제 출력 6

-1

Comments

There are no comments at the moment.