Inverse Look-and-Say
시간 제한1초메모리 제한2048 MB
양의 정수 n이 주어질 때 look-and-say 규칙으로 f(x) = n을 만족하는 유일한 x를 찾고, 없으면 -1을 출력한다.
문제
다음과 같은 수열을 생각해보자: .
이 수열의 초기값은 이고, 이후의 수들은 다음과 같이 생성된다.
- 에는 “개의 ”가 있으므로, 다음 값은 이다.
- 에는 “개의 , 개의 ”가 있으므로 다음 값은 이다.
- 에는 “개의 , 개의 ”가 있으므로 다음 값은 이다.
- 에는 “개의 , 개의 , 개의 ”가 있으므로, 다음 값은 이다.
이 수열은 이러한 “look-and-say” 규칙으로 생성된다. 이 수열에서 다음 항을 계산하는 규칙을 양의 정수 에 적용해서 나오는 수를 라고 하자. 즉, , , , 와 같이 주어지는 양의 정수에 대해 이를 십진법으로 읽었을 때 연속되는 숫자의 개수를 보이는 대로 읽어서 만들어지는 수를 의미한다.
양의 정수 에 연속해서 나타나는 숫자가 회를 넘지 않을 때에만 가 정의되며, “look-and-say” 규칙을 적용하여 인 을 얻을 수 있다. 여러분이 할 일은 입력으로 양의 정수 이 주어질때, 인 양의 정수 를 구하는 것이다. 가 존재한다면 그 값은 유일하다. 주의할 점은 어떤 양의 정수 은 그러한 를 가지지 않는다는 것이다. 예를 들어, 인 양의 정수 는 존재하지않는다. 또한 인 양의 정수 역시 존재하지 않는다. 의 경우 “개의 , 개의 ”로 해석하여 가 이라 생각할 수 있으나, 이다. 어떤 양의 정수도 이 “look-and-say” 규칙에 따라 을 생성할 수 없다.
입력
입력으로 첫 줄에 보다 작은 양의 정수 이 주어진다.
출력
인 양의 정수 가 존재한다면 그 값을 출력하고, 그렇지 않다면 을 출력한다.