#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
typedef long long llt;
const int MaxN = 4000000 + 5;
const llt g = 3;
const llt Mod = 998244353;
int N, M, V;
llt A[MaxN], B[MaxN], C[MaxN]; int R[MaxN];
inline llt Fast_pow(llt low, llt high) {
llt res = 1;
while (high) {
if (high & 1) res = res * low % Mod;
high >>= 1;
low = low * low % Mod;
}
return res;
}
void init() {
scanf("%d %d", &N, &M);
N++; M++;
for (int i = 0; i < N; ++i) scanf("%lld", &A[i]);
for (int i = 0; i < M; ++i) scanf("%lld", &B[i]);
}
inline void NTT(llt a[], int n, llt f) {
for (int i = 0; i < n; ++i)
if (i < R[i]) swap(a[i], a[R[i]]);
for (int i = 1; i < n; i <<= 1) {
llt w = Fast_pow(Fast_pow(g, f), (Mod - 1) / (i << 1));
for (int j = 0; j < n; j += (i << 1)) {
llt x = 1;
for (int k = 0; k < i; ++k, x = x * w % Mod) {
llt lson = a[j + k], rson = a[i + j + k];
a[j + k] = lson + rson * x;
a[j + k] %= Mod;
a[i + j + k] = lson - rson * x;
a[i + j + k] %= Mod;
}
}
}
if (f == Mod - 2)
for (int i = 0; i < n; ++i)
a[i] = a[i] * Fast_pow(n, Mod - 2) % Mod;
}
void solve() {
V = 1;
while (V < N + M - 1) V <<= 1;
for (int i = 1; i < V; ++i) {
R[i] = (R[i >> 1] >> 1);
if (i & 1) R[i] |= (V >> 1);
}
NTT(A, V, 1); NTT(B, V, 1);
for (int i = 0; i < V; ++i)
C[i] = A[i] * B[i] % Mod;
NTT(C, V, Mod - 2);
for (int i = 0; i < N + M - 1; ++i)
printf("%lld ", (C[i] + Mod) % Mod);
puts("");
}
int main() {
init();
solve();
return 0;
}
| Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
| Subtask #1 Testcase #1 | 38.91 us | 52 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #2 | 98.579 ms | 8 MB + 480 KB | Accepted | Score: 100 | 显示更多 |
| Subtask #1 Testcase #3 | 46.949 ms | 3 MB + 844 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #4 | 46.806 ms | 3 MB + 832 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #5 | 42.43 us | 52 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #6 | 39.2 us | 52 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #7 | 39.29 us | 52 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #8 | 92.592 ms | 8 MB + 212 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #9 | 92.554 ms | 8 MB + 212 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #10 | 86.647 ms | 7 MB + 968 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #11 | 98.789 ms | 8 MB + 560 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #12 | 98.729 ms | 7 MB + 440 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #13 | 37.44 us | 52 KB | Accepted | Score: 0 | 显示更多 |