아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Строки Фибоначчи --- 2

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

요약
각 질의마다 피보나치 문자열 F_n의 처음 k개 문자 안에 'a'가 몇 번 나오는지 센다.
난이도

보통10점 중 4점

유형
문자열, 재귀, 동적 계획법, 수학
정답자
아직 제출이 없습니다

문제

В математике достаточно часто применяются так называемые рекуррентные соотношения. Обычно они применяются для задания числовых последовательностей, но могут применяться и для задания последовательностей строк.

Одним из примеров строк, задаваемы рекуррентным соотношением являются строки Фибонначи F_0F\_0, F_1F\_1, …\ldots Они задаются следующим образом: F_0=aF\_0=a, F_1=bF\_1=b, F_i=F_i−2F_i−1,i>1F\_i=F\_{i-2}F\_{i-1}, i > 1. Первые семь строк Фибоначчи выглядят следующим образом: a, b, ab, bab, abbab, bababbab, abbabbababbab.

Дима занимается в кружке олимпиадного программирования и интересуется алгоритмами на строках. Недавно он узнал о строках Фибоначчи. Он быстро понял, что их длина с увеличением номера ii растет очень быстро, поэтому задача нахождения всех символов строки F_iF\_i требует слишком большого объема памяти. В прошлый раз он ограничился задачей нахождения лишь некоторых символов строки F_iF\_i. В этот раз он поставил перед собой более сложную задачу --- необходимо найти, сколько раз буква <<a>> встречается среди первых kk символов строки F_iF\_i.

Напишите программу, решающую эту задачу.

입력

Входной файл содержит несколько наборов входных данных. Первая строка входного файла содержит целое число TT наборов входных данных (1≤T≤1001 \le T \le 100). Каждая из последующих TT строк описывает один набор входных данных и содержит по два целых числа: nn и kk (0≤n≤450 \le n \le 45, 1≤k≤∣F_n∣1 \le k \le |F\_n|, как ∣F_n∣|F\_n| обозначена длина строки F_nF\_n, позиции символов в строке нумеруются с единицы).

출력

Выведите в выходной файл TT строк, каждая из которых должна содержать одно число --- ответ для соответствующего набора входных данных.

예제1

  1. 예제 1

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