만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

회문 수열

시간 제한20초메모리 제한1024 MB

요약
알파벳 첫 L개 문자로 만든 길이 N 이하의 회문을 사전순으로 나열할 때 K번째 회문의 길이를 구합니다. 그런 회문이 없으면 0을 출력합니다.
난이도

보통10점 중 6점

유형
조합론, 수학, 이분 탐색
정답자
아직 제출이 없습니다

문제

해나는 영어 알파벳의 처음 LL개 소문자로만 이루어진 새로운 언어를 만들고 있다. 그녀는 회문에 빠져 있다. 회문은 앞에서 읽으나 뒤에서 읽으나 같은 단어이며, hannah와 civic이 그 예이다. 그녀는 이 언어의 단어 중 길이가 NN 이하이면서 회문인 단어를 모두 적어 두었다.

그녀가 적은 회문 단어들을 사전 순으로 나열했을 때, KK번째로 작은 단어의 길이를 구하라. 단어 a1,a2,…,apa_1, a_2, \ldots, a_p가 b1,b2,…,bqb_1, b_2, \ldots, b_q보다 사전 순으로 작다는 것은, 처음으로 달라지는 위치 ii에서 ai<bia_i < b_i인 것을 말한다. 어떤 단어의 접두사는 그 단어 자신보다 사전 순으로 작다. 예를 들어 a, aa, aba, cabac, d는 사전 순으로 증가하는 순서로 놓인다.

입력

첫 줄에 테스트 케이스의 개수 TT가 주어진다. 이어서 TT개의 줄에 위에서 설명한 LL, NN, KK가 세 정수로 한 줄씩 주어진다.

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄을 출력한다. 여기서 xx는 1부터 시작하는 테스트 케이스 번호이고, yy는 해나의 언어에서 길이가 NN 이하인 회문 단어를 사전 순으로 나열했을 때 KK번째로 작은 회문 단어의 길이이다. 그런 단어가 없으면 0을 출력한다.

제한

  • 1≤T≤1001 \le T \le 100
  • 1≤L≤261 \le L \le 26
  • 1≤K≤10121 \le K \le 10^{12}

예제1

  1. 예제 1

    입력
    2
    2 3 4
    2 3 9
    
    예상 출력
    Case #1: 3
    Case #2: 0