만드는 중입니다

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

비밀 소 암호

시간 제한2초메모리 제한512 MB

요약
무한 코드 문자열이 두 배씩 늘어난다. 각 단계는 현재 문자열을 오른쪽으로 한 칸 회전해 붙인다. N번째 문자를 구한다.
난이도

보통10점 중 6점

유형
재귀, 분할 정복, 수학
정답자
아직 제출이 없습니다

문제

소들이 비밀 암호를 실험하고 있다. 소들은 암호의 일부로 쓸 무한히 긴 문자열을 만드는 방법을 고안했다.

문자열 ss에 대해 F(s)F(s)는 ss 뒤에 ss를 오른쪽으로 한 칸 "회전"한 문자열을 이어 붙인 것이다. 오른쪽 회전에서는 ss의 마지막 문자가 맨 앞으로 옮겨 가 새로운 첫 문자가 된다. 소들은 처음 문자열 ss에 FF를 계속 적용해서 무한히 긴 암호 문자열을 만든다. 따라서 한 번 적용할 때마다 현재 문자열의 길이가 두 배가 된다.

처음 문자열과 위치 NN이 주어질 때, 무한 암호 문자열의 NN번째 문자를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 문자열과 NN이 공백으로 구분되어 주어진다. 문자열은 알파벳 대문자로만 이루어져 있고 길이는 최대 30이다. N≤1018N \le 10^{18}이다.

NN은 32비트 정수 범위를 넘을 수 있으므로 64비트 정수 자료형(C/C++의 long long 등)을 사용하는 것이 좋다.

출력

처음 문자열로 만든 무한 암호 문자열의 NN번째 문자를 출력한다. 첫 문자는 N=1N=1이다.

힌트

예제에서 처음 문자열 COW는 다음과 같이 늘어난다.

COW -> COWWCO -> COWWCOOCOWWC
                 12345678

예제1

  1. 예제 1

    입력
    COW 8
    
    예상 출력
    C