아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

복소 정수 해

시간 제한8초메모리 제한512 MB

요약
차수가 10 이하인 정수 계수 다항식이 주어질 때, 가우스 정수 근을 모두 찾아 실수부와 허수부 순으로 정렬해 출력한다.
난이도

보통10점 중 7점

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

문제

f(x)=a0+a1x+a2x2+⋯+adxdf(x) = a_0 + a_1 x + a_2 x^2 + \cdots + a_d x^d가 주어질 때, f(x)=0f(x) = 0의 복소 정수 해를 모두 구하는 프로그램을 작성하시오. 각 aia_i (0≤i≤d0 \le i \le d)는 정수 상수이고 ad≠0a_d \ne 0이다. 복소 정수란 실수부와 허수부가 모두 정수인 복소수를 말한다.

입력

입력은 두 줄로 이루어진다. 첫째 줄에는 f(x)f(x)의 차수 dd가 주어진다. 둘째 줄에는 a0,a1,…,ada_0, a_1, \ldots, a_d의 d+1d+1개 정수가 주어진다. 다음이 보장된다: 1≤d≤101 \le d \le 10, ∣ai∣≤106|a_i| \le 10^6, ad≠0a_d \ne 0.

출력

출력은 두 줄로 이루어진다. 첫째 줄에는 복소 정수 해의 개수 mm을 출력한다. 둘째 줄에는 mm개의 해를 공백으로 구분하여 출력한다. 중근이더라도 각 해는 한 번씩만 세고 출력한다. 해는 실수부, 허수부 순으로 오름차순으로 정렬하여 0, -2, i, -3i, 2+i, 3-4i와 같은 형식으로 출력한다.

예제2

  1. 예제 1

    입력
    4
    -2 0 0 0 2
    
    예상 출력
    4
    -1 -i i 1
    
  2. 예제 2

    입력
    8
    0 0 25 15 17 -10 1 -1 1
    
    예상 출력
    5
    -1-2i -1+2i 0 2-i 2+i