수열을 완성하라!

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

요약
최소 차수 다항식으로 표현되는 수열이 주어질 때, 유한차분법을 이용해 이후 항들을 정확히 계산합니다.
난이도

보통10점 중 5점

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

문제

잡지에 자주 실리는 수열 퀴즈를 알고 있을 것이다. 예를 들어 1, 2, 3, 4, 5 라는 수열이 주어졌을 때 다음에 올 숫자는 무엇일까? 어떤 문제는 쉽게 답할 수 있지만 어떤 문제는 꽤 어렵다. 이런 수열 퀴즈가 인기가 많기 때문에, 새 포털의 "여가" 섹션에 이를 넣으려고 한다.

이러한 퀴즈 중 상당수는 수열을 다항식으로 표현하여 풀 수 있다. 예를 들어 수열 1, 2, 3, 4, 5 는 자명한 다항식으로 볼 수 있고, 다음 숫자는 6이다. 1, 2, 4, 7, 11 처럼 더 복잡한 수열도 다항식으로 나타낼 수 있는데, 이 경우에는 12n2−12n+1\frac{1}{2}n^2 - \frac{1}{2}n + 1 을 쓸 수 있다. 수열의 항이 모두 정수라도 다항식의 계수는 임의의 실수가 될 수 있음에 유의하라.

다항식은 다음과 같은 형태이다.

P(n)=aD⋅nD+aD−1⋅nD−1+⋯+a1⋅n+a0.P(n) = a_D \cdot n^D + a_{D-1} \cdot n^{D-1} + \cdots + a_1 \cdot n + a_0.

aD≠0a_D \neq 0 이면 DD 를 그 다항식의 차수라고 한다. 상수 함수 P(n)=CP(n) = C 는 차수가 00 인 다항식으로 볼 수 있고, 영함수 P(n)=0P(n) = 0 의 차수는 보통 −1-1 로 정의한다.

입력

첫 번째 줄에 이어지는 테스트 케이스의 개수를 나타내는 양의 정수 TT 가 주어진다.

각 테스트 케이스는 두 줄로 이루어진다. 첫 줄에는 두 정수 SS 와 CC 가 공백 하나로 구분되어 주어지며, 1≤S<1001 \le S < 100, 1≤C<1001 \le C < 100, S+C≤100S + C \le 100 을 만족한다. SS 는 주어진 수열의 길이이고, CC 는 이어서 찾아야 하는 숫자의 개수이다.

두 번째 줄에는 수열을 이루는 SS 개의 정수 X1,X2,…,XSX_1, X_2, \ldots, X_S 가 공백으로 구분되어 주어진다. 이 수열은 항상 어떤 다항식 P(n)P(n) 으로 표현할 수 있어서 모든 ii 에 대해 Xi=P(i)X_i = P(i) 가 성립한다. 이러한 다항식 중 차수가 가장 낮은 것을 Pmin⁡P_{\min} 이라 하며, 수열을 완성할 때는 이 다항식을 사용한다.

출력

각 테스트 케이스마다 한 줄에 CC 개의 정수를 공백 하나로 구분하여 출력한다. 이는 차수가 가장 낮은 다항식에 따라 수열을 완성하는 값, 즉 Pmin⁡(S+1),Pmin⁡(S+2),…,Pmin⁡(S+C)P_{\min}(S+1), P_{\min}(S+2), \ldots, P_{\min}(S+C) 이다.

모든 결과 Pmin⁡(S+i)P_{\min}(S+i) 는 음이 아니며 표준 정수 자료형에 들어감이 보장된다.

예제4

  1. 예제 1

    입력
    4
    6 3
    1 2 3 4 5 6
    8 2
    1 2 4 7 11 16 22 29
    10 2
    1 1 1 1 1 1 1 1 1 2
    1 10
    3
    
    예상 출력
    7 8 9
    37 46
    11 56
    3 3 3 3 3 3 3 3 3 3
    
  2. 예제 2

    입력
    1
    3 3
    5 5 5
    
    예상 출력
    5 5 5
    
  3. 예제 3

    입력
    1
    2 2
    2 4
    
    예상 출력
    6 8
    
  4. 예제 4

    입력
    1
    5 3
    1 4 9 16 25
    
    예상 출력
    36 49 64