다항식의 나머지 연산
시간 제한1초메모리 제한128 MB
이진 계수 다항식 두 개를 GF(2)에서 곱한 뒤 세 번째 다항식으로 나눈 나머지를 비트열 형식으로 출력한다.
문제
계수가 0 또는 1로만 이루어진 특수한 다항식들의 집합을 생각하자. 이 집합에서 정의되는 덧셈, 뺄셈, 곱셈은 모두 결과 계수를 2로 나눈 나머지를 취한다.
덧셈. 두 다항식을 일반적인 방법으로 더한 뒤, 각 계수를 2로 나눈 나머지를 취한다. , , , 이므로, 결과 다항식의 각 차수 계수는 두 다항식의 해당 계수에 대한 XOR 연산 결과와 같다.
뺄셈. 뺄셈도 마찬가지로 , , , 이므로, 이 집합에서 뺄셈은 덧셈과 완전히 동일하다(계수 간 XOR).
곱셈. 두 다항식을 일반적인 방법으로 곱한 뒤, 각 계수를 2로 나눈 나머지를 취한다.
나머지. 두 다항식 와 의 곱을 로 나눈 나머지는, 위 방법으로 를 구한 뒤 그 결과를 로 나눈 나머지이다.
표기법. 어떤 다항식의 최고차항의 차수를 라 하면, 계수가 0 또는 1이므로 그 다항식은 정수 과 길이 인 비트스트링의 쌍으로 유일하게 나타낼 수 있다. 비트스트링은 최고차항의 계수부터 상수항의 계수까지 차례로 나열한다. 다항식의 차수는 1000보다 작다.
예를 들어 은 다음과 같이 표기된다.
8 1 1 0 0 0 0 0 1
여기서 8은 비트의 총 개수이며, 최고차항의 차수 7에 1을 더한 값이다. 이어지는 8개의 비트 1 1 0 0 0 0 0 1은 각각 의 계수이다.
이제 위 성질을 만족하는 세 다항식 , , 가 이 형식으로 주어질 때, 를 로 나눈 나머지를 계산하라.
입력
입력은 여러 개의 테스트 케이스로 이루어진다.
첫 줄에 테스트 케이스의 수 가 주어진다. 이어서 각 테스트 케이스마다 세 줄에 걸쳐 위에서 설명한 형식으로 , , 가 순서대로 주어진다.
출력
각 테스트 케이스마다, 를 로 나눈 나머지를 위에서 설명한 형식으로 한 줄에 출력한다. 나머지가 영다항식(zero polynomial)인 경우에는 1 0으로 출력한다.