만드는 중입니다

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

피보나치 문자열

면접 대비

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

요약
n과 k가 주어질 때 피보나치 문자열 F_n의 k번째 문자를 구합니다. F_0은 a, F_1은 b이며, F_i는 F_(i-2)에 F_(i-1)을 이어 붙인 문자열입니다.
난이도

쉬움10점 중 3점

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

문제

수학에서는 점화식이 자주 쓰인다. 보통 수열을 정의할 때 쓰지만, 문자열의 수열을 정의하는 데에도 쓸 수 있다. 점화식으로 정의되는 문자열의 예로 피보나치 문자열 F0F_0, F1F_1, …\ldots 이 있다. 피보나치 문자열은 다음과 같이 정의된다: F0=aF_0=a, F1=bF_1=b, Fi=Fi−2Fi−1F_i=F_{i-2}F_{i-1} (i>1i > 1). 처음 일곱 개의 피보나치 문자열은 a, b, ab, bab, abbab, bababbab, abbabbababbab이다. 디마는 올림피아드 프로그래밍 동아리에 다니며 문자열 알고리즘에 관심이 많다. 최근 그는 피보나치 문자열을 알게 되었다. 그는 ii가 커질수록 길이가 매우 빠르게 늘어난다는 것을 바로 알아챘고, 그래서 FiF_i의 모든 문자를 저장하는 데는 메모리가 너무 많이 든다고 판단했다. 그래서 일부 문자만 찾기로 했다. FiF_i의 kk번째 문자를 구하는 프로그램을 작성하라.

입력

입력 파일에는 여러 개의 테스트 케이스가 있다. 첫 줄에는 테스트 케이스의 개수 TT (1≤T≤1001 \le T \le 100)가 주어진다. 이어지는 TT개의 줄에는 각각 정수 nn과 kk가 주어진다 (0≤n≤450 \le n \le 45, 1≤k≤∣Fn∣1 \le k \le |F_n|, 여기서 ∣Fn∣|F_n|은 문자열 FnF_n의 길이이다). 문자의 위치는 1부터 번호가 매겨진다.

출력

TT개의 줄을 출력한다. 각 줄에는 해당 테스트 케이스의 답인 문자 하나만 출력한다.

예제1

  1. 예제 1

    입력
    4
    0 1
    1 1
    3 2
    7 7
    
    예상 출력
    a
    b
    a
    a