SOJ ONLINE JUDGE

문제 127

다항식의 곱

내 상태
미제출
난이도
127번 문제 난이도 보기
Diamond V
출제자
rlatjwls7882
시간 제한
5000 ms
메모리 제한
1024 MB
127번 문제 태그 보기
구현

두 다항식의 계수가 낮은 차수부터 길이가 각각 $N$, $M$인 정수 배열 $A$, $B$로 주어진다. 배열의 인덱스는 $0$부터 시작하며, 인덱스 $i$의 값은 $i$차항의 계수이다. 두 다항식을 곱한 결과의 계수 배열을 구해 보자. 각 계수는 소수 $998\,244\,353$으로 나눈 나머지로 구한다.

빈 배열은 영다항식을 뜻한다. 두 배열이 비어 있지 않다면 결과 배열의 길이는 $N+M-1$이며, 끝의 계수가 $0$이어도 생략하지 않는다.

입력

첫 번째 줄에 테스트 케이스의 수를 의미하는 정수 $T$가 주어진다. $(1 \le T \le 1\,000)$ 각 테스트 케이스는 다음과 같이 주어진다.

첫 번째 줄에 두 정수 $N$, $M$이 공백으로 구분되어 주어진다. $(0 \le N, M \le 262\,144)$

두 번째 줄에 계수 배열의 정수 원소 $A_0, A_1, \cdots, A_{N-1}$이 공백으로 구분되어 주어진다. $(-2^{31} \le A_i \le 2^{31}-1)$

세 번째 줄에 계수 배열의 정수 원소 $B_0, B_1, \cdots, B_{M-1}$이 공백으로 구분되어 주어진다. $(-2^{31} \le B_i \le 2^{31}-1)$

모든 테스트 케이스에 대한 $N+M$의 합은 $524\,288$ 이하이다. 빈 배열도 빈 줄을 차지한다. 입력 마지막에 연속한 빈 줄은 생략해도 된다.

출력

각 테스트 케이스마다 첫 번째 줄에 곱의 계수 배열 길이를 출력한다. 두 번째 줄에 계수를 낮은 차수부터 공백으로 구분하여 출력한다.

두 배열 중 하나라도 비어 있으면 첫 번째 줄에 $0$을 출력하고 두 번째 줄은 빈 줄로 출력한다. 각 계수는 $[0,998\,244\,353)$의 값으로 출력한다.

예제 입력 1

3
0 2

1 2
1 1
-2147483648
2147483647
3 2
1 2 3
4 5

예제 출력 1

0

1
417104141
4
4 13 22 15

제출

편집기에서 나가려면 Esc를 누른 뒤 Tab 또는 Shift와 Tab을 누르세요.