社区讨论
报错报飞了,求帮看,玄关
学术版参与者 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 条回复,欢迎继续交流。
正在加载回复...