提交记录 6138


用户 题目 状态 得分 用时 内存 语言 代码长度
ajcxsu 1002. 测测你的多项式乘法 Compile Error 0 0 ns 0 KB C++11 1.10 KB
提交时间 评测时间
2018-09-28 11:28:45 2020-08-01 00:39:29
// Code by ajcxsu
// Problem: ntt

#define MOD (998244353)

int swap(int &x, int &y) { x^=y^=x^=y; }

int qpow(int x, int y) {
    // y=y%MOD+MOD-1;
    int ret=1;
    while(y) {
        if(y&1) ret=1ll*ret*x%MOD;
        x=1ll*x*x%MOD, y>>=1;
    }
    return ret;
}

const int N=4e6+10;
int a[N], b[N], r[N];
int n, m, l=0;
void fft(int x[], int y) {
    for(int i=1; i<n; i++) if(i<r[i]) swap(x[i], x[r[i]]);
    int t, o, w;
    for(int i=1; i<n; i<<=1) {
        o=qpow(3, y*(MOD-1)/(i<<1)+MOD-1);
        for(int j=0; j<n; j+=(i<<1)) {
            w=1;
            for(int k=0; k<i; k++, w=1ll*w*o%MOD)
                t=1ll*x[i+j+k]*w%MOD, (x[i+j+k]=x[j+k]-t+MOD)%=MOD, (x[j+k]+=t)%=MOD;
        }
    }
}

void poly_multiply(unsigned *A, int n, unsigned *B, int m, unsigned *C) {
    for(int i=0;i<=n;i++) a[i]=A[i];
    for(int j=0;j<=m;j++) b[i]=B[i];
    m+=n; for(n=1; n<=m; n<<=1) l++;
    for(int i=1;i<n;i++) r[i]=(r[i>>1]>>1)|((i&1)<<(l-1));
    fft(a, 1), fft(b, 1); for(int i=0; i<n; i++) a[i]=1ll*a[i]*b[i]%MOD;
    int inv=qpow(n, MOD-2);
    fft(a, -1);
    for(int i=0;i<=m;i++) C[i]=1ll*a[i]*inv%MOD;
}

CompilationN/AN/ACompile ErrorScore: N/A


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