#include<cstdio>
#define Rint register int
using namespace std;
typedef long long LL;
const int P = 998244353, MAXN = 1 << 19, G = 3, Gi = 332748118;
LL a[MAXN], b[MAXN];
int n, m, limit, L, R[MAXN];
inline void swap(LL &a, LL &b){
LL t = a;a = b;b = t;
}
inline LL kasumi(LL a, LL b){
LL res = 1;
while(b){
if(b & 1) res = res * a % P;
a = a * a % P;
b >>= 1;
}
return res;
}
inline void NTT(LL *A, int type){
for(Rint i = 0;i < limit;i ++)
if(i < R[i]) swap(A[i], A[R[i]]);
for(Rint mid = 1;mid < limit;mid <<= 1){
LL Wn = kasumi(type == 1 ? G : Gi, (P - 1) / (mid << 1));
for(Rint j = 0;j < limit;j += mid << 1){
LL w = 1;
for(Rint k = 0;k < mid;k ++, w = w * Wn % P){
LL x = A[j + k], y = w * A[j + k + mid] % P;
A[j + k] = (x + y) % P;
A[j + k + mid] = (x - y + P) % P;
}
}
}
}
int main(){
scanf("%d%d", &n, &m);
for(Rint i = 0;i <= n;i ++) scanf("%lld", a + i);
for(Rint i = 0;i <= m;i ++) scanf("%lld", b + i);
for(L = -1, limit = 1;limit <= n + m;limit <<= 1, L ++);
for(Rint i = 0;i < limit;i ++)
R[i] = (R[i >> 1] >> 1) | ((i & 1) << L);
NTT(a, 1);NTT(b, 1);
for(Rint i = 0;i < limit;i ++)
a[i] = a[i] * b[i] % P;
NTT(a, -1);
LL inv = kasumi(limit, P - 2);
for(Rint i = 0;i <= n + m;i ++)
printf("%lld ", a[i] * inv % P);
}
Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
Subtask #1 Testcase #1 | 10.22 us | 28 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #2 | 73.091 ms | 6 MB + 456 KB | Accepted | Score: 100 | 显示更多 |
Subtask #1 Testcase #3 | 34.133 ms | 2 MB + 820 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #4 | 34.15 ms | 2 MB + 808 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #5 | 11.57 us | 28 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #6 | 11.64 us | 28 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #7 | 10.32 us | 28 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #8 | 67.032 ms | 6 MB + 188 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #9 | 66.922 ms | 6 MB + 188 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #10 | 61.37 ms | 5 MB + 944 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #11 | 73.624 ms | 6 MB + 536 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #12 | 73.802 ms | 5 MB + 416 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #13 | 9.06 us | 28 KB | Accepted | Score: 0 | 显示更多 |