Прилеглі біти#2445

Прилеглі біти

1 секунда
64 мегабайти
Середня

Для рядка з бітів x_1, x_2, x_3, \ldots, x_n кількість пар сусідніх одиниць у рядку () задається як

x_1 \cdot x_2 + x_2 \cdot x_3 + x_3 \cdot x_4 + \dots + x_{n-1} \cdot x_n,

тобто визначає, скільки разів одиничний біт стоїть поруч з іншим одиничним бітом. Наприклад:

\operatorname{AdjBC}(011101101) = 3,\ \operatorname{AdjBC}(111101101) = 4,\ \operatorname{AdjBC}(010101010) = 0

Напишіть програму, яка приймає на вхід цілі числа та і повертає кількість бітових рядків довжини (із 2^n), таких що \operatorname{AdjBC}(x) = k. Наприклад, для -бітних рядків існує способів отримати \operatorname{AdjBC}(x) = 2:

\mathbf{11100},\ \mathbf{01110},\ \mathbf{00111},\ \mathbf{10111},\ \mathbf{11101},\ \mathbf{11011}

Вхідні дані

Перший рядок містить одне ціле число (1 \leq P \leq 1000) — кількість наборів даних, що слідують далі. Кожен набір даних — це один рядок, що містить номер набору, пробіл, десяткове ціле число () — кількість бітів у рядках, пробіл і ще одне десяткове ціле () — бажане значення кількості сусідніх одиниць. Кількість бітів () не перевищує , а параметри і підібрані так, щоб результат поміщався у знакове -бітне ціле число.

Вихідні дані

Для кожного набору даних виведіть один рядок, що містить номер набору, пробіл і кількість -бітних рядків з кількістю сусідніх одиниць, що дорівнює .

Приклади

Приклад 1

Loading
Loading