[BOJ 9478] Nested 팰린드롬
View as PDF
Submit solution
Assembly, Awk, C, C++, Java, Pascal, Perl, Python, Sed, Text
Points:
3
Time limit:
2.0s
Memory limit:
128M
Problem types
Allowed languages
팰린드롬은 앞으로 읽으나 뒤로 읽으나 똑같은 숫자다. 그런데 꿍은 Nested 팰린드롬이라고 불리는 특별한 팰린드롬에 관심을 갖게 되었다. Nested 팰린드롬은 다음의 세가지 조건을 만족한다.
- 숫자가 팰린드롬이어야 하며,
- 숫자를 반으로 쪼갰을 때, 앞쪽의 절반 역시 Nested 팰린드롬 이어야한다. 만약 자리수가 홀수개라면, 정가운데에 있는 한 자리의 수는 무시해도 된다.
- 또한 두개의 인접한 수는 같아서는 안 된다.
꿍은 Nested 팰린드롬을 하나 만들었으며, 맨 앞에 0이 오지 않는다. 그 다음, 몇몇 숫자를 "?"로 바꾸었다. 꿍은 ?를 숫자로 바꿔서 만들 수 있는 모든 Nested 팰린드롬 중에서 k번째 큰 수를 찾으려고 한다. 꿍이 쓴 숫자는 처음부터 Nested 팰린드롬이 아닐 수도 있다.
입력 형식
각 테스트 케이스는 두 줄로 이루어진다. 첫 번째 줄에는 k(1≤k≤1018)가 주어지며 두 번째 줄에는 오직 0\(9와 "?"로만 이루어진 길이가 1\)10000인 미지의 팰린드롬이 주어진다. 입력의 마지막은 0 하나만 주어진다.
출력 형식
각 테스트 케이스에 대해 각 줄에 꿍이 찾고있는 Nested 팰린드롬을 출력한다. 만약 가능한 팰린드롬이 없거나 주어진 미지의 팰린드롬이 Nested 팰린드롬이 될 수 없을 경우 -1을 출력한다.
예제 입력
1
1?1
1
?3?
1
?1?
55
???
55
1?1
3
0?0
0
예제 출력
101
131
212
707
-1
-1
Comments