파스칼과 불
시간 제한1초메모리 제한2048 MB
4비트로 주어진 불리언 함수가 만드는 삼각형에서 r행 i번째 비트를 구하거나 처음 r행에 있는 1의 개수를 셉니다.
문제
많은 사람이 파스칼 삼각형을 알고 있다. 파스칼 삼각형은 정수를 삼각형 모양으로 배열한 것으로, 프랑스의 수학자이자 철학자인 블레즈 파스칼(1623-1662)의 이름을 따서 불린다. 위에서부터 행에 번호를 붙이면, 행에는 개의 원소가 있고, 왼쪽에서 오른쪽으로 번 번호를 붙인다. 행의 1번째 원소와 번째 원소는 모두 이다. 이고 이면, 행의 번째 원소는 행의 번째 원소와 번째 원소의 합이다. 쉽게 말해, 가장자리가 아닌 원소는 바로 위에 있는 두 원소의 합이다. 그림 J.1(a)는 파스칼 삼각형의 처음 행을 보여 준다.

그림 J.1: (a) 파스칼 삼각형, (b) 함수 으로 만든 파스칼-불 삼각형
값을 합치는 규칙으로 일반적인 덧셈 말고 다른 것을 쓰면 어떻게 될까? 가장자리 원소는 비트(1)이므로, 자연스러운 선택은 임의의 두 입력 불 함수를 쓰는 것이다. 이 이름은 영국의 수학자이자 철학자인 조지 불(1815-1864)에게서 왔다. 예를 들어, 아래 진리표로 주어진 불 함수는 그림 J.1(b)의 삼각형을 만든다(처음 행도 함께 보여 준다). 이 진리표에서 와 는 각각 행의 번째 원소와 번째 원소에 대응하고, 는 행의 번째 원소가 된다.
일반적으로 이런 진리표의 가장 오른쪽 열에 있는 비트를 위에서 아래로 이라고 하면, 두 입력 불 함수는 4비트 문자열 로 간결하게 나타낼 수 있다. 위 예시 함수는 1000으로 나타낸다.
파스칼-불 삼각형에 대해 다음 두 종류의 질문에 답하는 것이 과제다.
- 주어진 불 함수 에서, 행 , 위치 의 비트는 무엇인가?
- 주어진 불 함수 에서, 처음 행에 1이 몇 개 있는가?
입력
입력의 첫 줄에는 테스트 케이스의 수 이 주어진다. 이어서 개의 줄이 주어지며, 각 줄은 다음 두 형식 중 하나이다.
-
B -
N
두 경우 모두 는 두 입력 불 함수를 나타내는 4비트 이진 문자열이고, 은 정수 이다. 첫 번째 형식에서 는 정수 이다.
출력
B 형식의 테스트 케이스에 대해, 로 생성한 파스칼-불 삼각형의 행 , 위치 에 있는 비트를 한 줄에 출력한다. N 형식의 테스트 케이스에 대해, 로 생성한 파스칼-불 삼각형의 처음 행에 있는 1의 개수를 한 줄에 출력한다.