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

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

원자 컴퓨터

시간 제한1초메모리 제한256 MB

요약
-1, 0, 1로 이루어진 길이가 y인 수열 중에서 2의 거듭제곱 가중합이 x와 같은 경우의 수를 셉니다.
난이도

보통10점 중 5점

유형
동적 계획법, 비트 연산
정답자
아직 제출이 없습니다

문제

한 교수가 보통 컴퓨터보다 80억 배 빠른 원자 컴퓨터를 만들었다. 이 컴퓨터는 값을 특수한 메모리에 저장하는데, 이 메모리는 한 비트가 -1, 0, 1 세 가지 상태 중 하나를 나타낸다.

yy비트 메모리에 저장된 비트를 앞에서부터 dy−1,dy−2,…,d1,d0d_{y-1}, d_{y-2}, \dots, d_1, d_0이라고 하면, 메모리가 나타내는 값은 다음과 같다.

∑i=0y−1di⋅2i\sum_{i=0}^{y-1} d_i \cdot 2^{i}

각 did_i는 -1, 0, 1 중 하나다. 예를 들어 (1)(−1)(0)2(1)(-1)(0)_2은 1⋅4+(−1)⋅2+0⋅1=21 \cdot 4 + (-1) \cdot 2 + 0 \cdot 1 = 2를 나타낸다. 비트 수는 항상 yy로 고정이고, 앞쪽 비트가 0인 표현도 서로 다른 저장 방법으로 센다.

저장하려는 정수 xx와 메모리의 비트 수 yy가 주어질 때, xx를 yy비트에 저장하는 방법의 수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. (T≥1T \ge 1)

다음 TT개 줄에 각각 두 정수 xix_i와 yiy_i가 주어진다. xix_i는 메모리에 저장하려는 값이고, yiy_i는 메모리의 비트 수다. (−2000000000≤xi≤2000000000-2000000000 \le x_i \le 2000000000, 1≤yi≤201 \le y_i \le 20)

출력

TT개 줄을 출력한다. ii번째 줄에는 xix_i를 yiy_i비트에 저장하는 방법의 수를 출력한다.

예제2

  1. 예제 1

    입력
    1
    1 2
    
    예상 출력
    2
    
  2. 예제 2

    입력
    2
    -2 1
    -2 2
    
    예상 출력
    0
    1