提交记录 8715


用户 题目 状态 得分 用时 内存 语言 代码长度
hotwords 1002i. 【模板题】多项式乘法 Accepted 100 98.789 ms 8752 KB C++ 1.72 KB
提交时间 评测时间
2019-03-06 19:14:41 2020-08-01 01:23:45
#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;
}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #138.91 us52 KBAcceptedScore: 0

Subtask #1 Testcase #298.579 ms8 MB + 480 KBAcceptedScore: 100

Subtask #1 Testcase #346.949 ms3 MB + 844 KBAcceptedScore: 0

Subtask #1 Testcase #446.806 ms3 MB + 832 KBAcceptedScore: 0

Subtask #1 Testcase #542.43 us52 KBAcceptedScore: 0

Subtask #1 Testcase #639.2 us52 KBAcceptedScore: 0

Subtask #1 Testcase #739.29 us52 KBAcceptedScore: 0

Subtask #1 Testcase #892.592 ms8 MB + 212 KBAcceptedScore: 0

Subtask #1 Testcase #992.554 ms8 MB + 212 KBAcceptedScore: 0

Subtask #1 Testcase #1086.647 ms7 MB + 968 KBAcceptedScore: 0

Subtask #1 Testcase #1198.789 ms8 MB + 560 KBAcceptedScore: 0

Subtask #1 Testcase #1298.729 ms7 MB + 440 KBAcceptedScore: 0

Subtask #1 Testcase #1337.44 us52 KBAcceptedScore: 0


Judge Duck Online | 评测鸭在线
Server Time: 2026-04-06 07:02:19 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠