만드는 중입니다

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

파스칼과 불

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

요약
4비트로 주어진 불리언 함수가 만드는 삼각형에서 r행 i번째 비트를 구하거나 처음 r행에 있는 1의 개수를 셉니다.
난이도

보통10점 중 7점

유형
수학, 비트 연산, 시뮬레이션
정답자
아직 제출이 없습니다

문제

많은 사람이 파스칼 삼각형을 알고 있다. 파스칼 삼각형은 정수를 삼각형 모양으로 배열한 것으로, 프랑스의 수학자이자 철학자인 블레즈 파스칼(1623-1662)의 이름을 따서 불린다. 위에서부터 행에 1,2,3,…,1, 2, 3, \ldots, 번호를 붙이면, rr행에는 rr개의 원소가 있고, 왼쪽에서 오른쪽으로 1,2,…,r1, 2, \ldots, r번 번호를 붙인다. rr행의 1번째 원소와 rr번째 원소는 모두 11이다. r≥3r \geq 3이고 1<i<r1 < i < r이면, rr행의 ii번째 원소는 r−1r-1행의 i−1i-1번째 원소와 ii번째 원소의 합이다. 쉽게 말해, 가장자리가 아닌 원소는 바로 위에 있는 두 원소의 합이다. 그림 J.1(a)는 파스칼 삼각형의 처음 88행을 보여 준다.

그림 J.1: (a) 파스칼 삼각형, (b) 함수 10001000으로 만든 파스칼-불 삼각형

값을 합치는 규칙으로 일반적인 덧셈 말고 다른 것을 쓰면 어떻게 될까? 가장자리 원소는 비트(1)이므로, 자연스러운 선택은 임의의 두 입력 불 함수를 쓰는 것이다. 이 이름은 영국의 수학자이자 철학자인 조지 불(1815-1864)에게서 왔다. 예를 들어, 아래 진리표로 주어진 불 함수는 그림 J.1(b)의 삼각형을 만든다(처음 88행도 함께 보여 준다). 이 진리표에서 xx와 yy는 각각 r−1r-1행의 i−1i-1번째 원소와 ii번째 원소에 대응하고, f(x,y)f(x,y)는 rr행의 ii번째 원소가 된다.

xxyyf(x,y)f(x,y)
000011
001100
110000
111100

일반적으로 이런 진리표의 가장 오른쪽 열에 있는 비트를 위에서 아래로 b00,b01,b10,b11b_{00}, b_{01}, b_{10}, b_{11}이라고 하면, 두 입력 불 함수는 4비트 문자열 b00b01b10b11b_{00} b_{01} b_{10} b_{11}로 간결하게 나타낼 수 있다. 위 예시 함수는 1000으로 나타낸다.

파스칼-불 삼각형에 대해 다음 두 종류의 질문에 답하는 것이 과제다.

  1. 주어진 불 함수 ff에서, 행 rr, 위치 ii의 비트는 무엇인가?
  2. 주어진 불 함수 ff에서, 처음 rr행에 1이 몇 개 있는가?

입력

입력의 첫 줄에는 테스트 케이스의 수 nn (1≤n≤250)(1 \leq n \leq 250)이 주어진다. 이어서 nn개의 줄이 주어지며, 각 줄은 다음 두 형식 중 하나이다.

  • ff B rr ii
  • ff N rr

두 경우 모두 ff는 두 입력 불 함수를 나타내는 4비트 이진 문자열이고, rr은 정수 (1≤r≤106)(1 \leq r \leq 10^6)이다. 첫 번째 형식에서 ii는 정수 (1≤i≤r)(1 \leq i \leq r)이다.

출력

ff B rr ii 형식의 테스트 케이스에 대해, ff로 생성한 파스칼-불 삼각형의 행 rr, 위치 ii에 있는 비트를 한 줄에 출력한다. ff N rr 형식의 테스트 케이스에 대해, ff로 생성한 파스칼-불 삼각형의 처음 rr행에 있는 1의 개수를 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    3
    1000 B 5 3
    1111 N 7
    0100 B 6 4
    
    예상 출력
    1
    28
    0