만드는 중입니다

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

f(x)\sqrt{f}(x)

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

요약
정수 계수 다항식 f가 주어질 때, g(g(x)) = f(x)를 만족하고 계수가 -100 이상 100 이하인 다항식 g를 찾습니다. 없으면 -1을 출력합니다.
난이도

어려움10점 중 8점

유형
수학, 정수론, 구현
정답자
아직 제출이 없습니다

문제

모든 실수 xx에 대해 정의되고 계수가 모두 정수인 다항식 f(x)=anxn+an−1xn−1+⋯+a1x+a0f(x) = a_n x^n + a_{n-1} x^{n-1} + \cdots + a_1 x + a_0가 주어진다.

모든 xx에 대해 g(g(x))=f(x)g(g(x)) = f(x)를 만족하는 다항식 g(x)=bmxm+bm−1xm−1+⋯+b1x+b0g(x) = b_m x^m + b_{m-1} x^{m-1} + \cdots + b_1 x + b_0가 존재하면, gg를 ff의 제곱근이라고 한다.

모든 계수 bib_i가 −100-100 이상 100100 이하의 정수인 ff의 제곱근 gg가 존재하는지 판단하고, 존재하면 그러한 gg를 하나 출력하라.

입력

첫 번째 줄에 다항식 f(x)f(x)의 차수 nn이 주어진다.

두 번째 줄에 f(x)f(x)의 각 항의 계수 an,an−1,⋯ ,a1,a0a_n, a_{n-1}, \cdots, a_1, a_0가 공백으로 구분되어 주어진다.

출력

조건을 만족하는 다항식 g(x)=bmxm+bm−1xm−1+⋯+b1x+b0g(x) = b_m x^m + b_{m-1} x^{m-1} + \cdots + b_1 x + b_0 (bm≠0b_m \neq 0)가 존재하면, 첫 번째 줄에 mm을 출력한다. 두 번째 줄에는 bm,bm−1,⋯ ,b1,b0b_m, b_{m-1}, \cdots, b_1, b_0를 공백으로 구분하여 이 순서대로 출력한다. 답이 여러 개이면 그중 하나를 출력한다.

g(x)g(x)가 존재하지 않으면 첫 번째 줄에 -1을 출력한다.

제한

  • 1≤n≤251 \le n \le 25
  • −1015≤ai≤1015-10^{15} \le a_i \le 10^{15}, an≠0a_n \neq 0

예제1

  1. 예제 1

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