社区讨论

报错报飞了,求帮看,玄关

学术版参与者 3已保存回复 8

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
8 条
当前快照
1 份
快照标识符
@lvstx5iu
此快照首次捕获于
2024/05/05 09:03
2 年前
此快照最后确认于
2024/05/05 10:52
2 年前
查看原帖
CPP
struct Pl
{
    int a[N + 5];
    void ntt(int n, int f)
    {
        // initbut(n);
        for(int i = 0; i < n; i++)
        {
            if(i < but[i])
            {
                swap(a[i], a[but[i]]);
            }
        }
        for(int len = 1; len < N; len <<= 1)
        {
            int w1 = qpow(f == 1 ? G : GINV, (MOD - 1) / (len * 2));
            for(int l = 0; l < n; l += len * 2)
            {
                int wk = 1;
                for(int k = 0; k < len; k++)
                {
                    int x = a[l + k], y = mum(wk, a[l + len + k]);
                    a[l + k] = adm(x, y), a[l + len + k] = adm(x, MOD - y);
                    wk = mum(wk, w1);
                }
            }
        }
        if(f == -1)
        {
            int INV = inv(n);
            for(int i = 0; i < n; i++)
            {
                a[i] = mum(a[i], INV);
            }
        }
    }
    Pl operator * (const Pl &b) const
    {
        ntt(N, 1);
        b.ntt(N, 1);
        for(int i = 0; i < N; i++)
        {
            a[i] = mum(a[i], b[i]);
        }
        ntt(N, -1);
        for(int i = N / 2; i < N; i++)
        {
            a[i] = 0;
        }
    }
};

回复

8 条回复,欢迎继续交流。

正在加载回复...