만드는 중입니다

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

다항식의 합성

시간 제한2초메모리 제한1024 MB

요약
Z/2Z 위의 다항식 f, g, h가 주어질 때 f(g(x))를 h(x)로 나눈 나머지를 구해 같은 형식으로 출력합니다.
난이도

보통10점 중 5점

유형
수학, 비트 연산, 구현
정답자
아직 제출이 없습니다

문제

Z/2Z\mathbb{Z}/2\mathbb{Z} 위의 다항식 f(x)f(x), g(x)g(x), h(x)h(x)가 주어진다. 다항식 f(g(x)) mod h(x)f(g(x)) \bmod h(x)를 구하시오.

입력

첫 세 줄에 다항식 ff, gg, hh가 한 줄에 하나씩 주어진다. 각 다항식 pp는 nn p0p_0 p1p_1 p2p_2 …\dots pnp_n 형태로 주어진다 (1≤n≤40001 \le n \le 4000, 모든 ii에 대해 pi∈{0,1}p_i \in \{0, 1\}, pn=1p_n = 1). 이때 다항식 p(x)p(x)는 p0+p1x+p2x2+⋯+pnxnp_0 + p_1 x + p_2 x^2 + \dots + p_n x^n이다.

출력

결과 다항식을 입력과 같은 형식으로 출력한다. 결과가 영다항식이면 0 0을 출력한다.

힌트

Z/2Z\mathbb{Z}/2\mathbb{Z}는 원소가 00과 11인 두 개의 값으로 이루어진 집합이다. 덧셈, 뺄셈, 곱셈, 나눗셈의 결과는 대응하는 정수 연산 결과를 22로 나눈 나머지이다.

이 체 위의 다항식은 fnxn+fn−1xn−1+…+f1x+f0f_n x^n + f_{n-1} x^{n-1} + \ldots + f_1 x + f_0 꼴이며, 각 계수는 00 또는 11이다. xx도 Z/2Z\mathbb{Z}/2\mathbb{Z}의 값을 가질 수 있다. 다항식의 차수는 fn≠0f_n \ne 0을 만족하는 가장 큰 nn이다.

두 다항식은 모든 계수가 같을 때 같다. 덧셈과 뺄셈은 계수별로 계산한다. a(x)±b(x)=∑k(ak±bk)xka(x) \pm b(x) = \sum_k (a_k \pm b_k) x^k이다. a(x)a(x)와 b(x)b(x)의 곱 c(x)=∑kckxkc(x) = \sum_k c_k x^k에서 cs=∑t=0satbs−tc_s = \sum_{t=0}^{s} a_t b_{s-t}이다.

0이 아닌 다항식 b(x)b(x)에 대해 q(x)b(x)+r(x)=a(x)q(x) b(x) + r(x) = a(x)이고 r(x)r(x)의 차수가 b(x)b(x)의 차수보다 작으면, a(x)/b(x)=q(x)a(x) / b(x) = q(x), a(x) mod b(x)=r(x)a(x) \bmod b(x) = r(x)라고 쓴다. q(x)q(x)와 r(x)r(x)는 하나로 정해진다.

합성 a(b(x))a(b(x))는 ∑kak(b(x))k\sum_k a_k (b(x))^k이다. 여기서 (b(x))0=1(b(x))^0 = 1, (b(x))1=b(x)(b(x))^1 = b(x), p>1p > 1일 때 (b(x))p=b(x)⋅(b(x))p−1(b(x))^p = b(x) \cdot (b(x))^{p-1}이다. 식을 전개한 뒤 같은 차수의 계수를 더한다.

예제2

  1. 예제 1

    입력
    5 0 1 0 1 0 1
    2 1 1 1
    4 0 1 1 0 1
    
    예상 출력
    1 1 1
    
  2. 예제 2

    입력
    2 1 1 1
    3 0 0 1 1
    4 1 0 1 0 1
    
    예상 출력
    3 1 0 0 1