提交记录 28025


用户 题目 状态 得分 用时 内存 语言 代码长度
xujindong 1002. 测测你的多项式乘法 Compile Error 0 0 ns 0 KB C++14 1016 B
提交时间 评测时间
2025-03-15 18:02:26 2025-03-15 18:02:27
#include<bits/stdc++.h>
using namespace std;
const int mod=998244353;
int wn[2097152],f[2097152],g[2097152],h[2097152];
void init(int n,int g){
  for(int i=n>>1,w=qpow(g,(mod-1)/n,mod);i>=1;i>>=1,w=1ll*w*w%mod)for(int j=0;j<i;j++)wn[i+j]=j?1ll*wn[i+j-1]*w%mod:1;
}
void DIF(int n,int f[]){
  for(int i=n>>1;i>=1;i>>=1)for(int j=0;j<n;j+=i<<1)for(int k=j,x,y;k<j+i;k++)x=f[k],y=f[k+i],f[k]=(x+y)%mod,f[k+i]=1ll*wn[i+k-j]*(x-y+mod)%mod;
}
void DIT(int n,int f[]){
  for(int i=1;i<=n>>1;i<<=1)for(int j=0;j<n;j+=i<<1)for(int k=j,x,y;k<j+i;k++)x=f[k],y=1ll*wn[i+k-j]*f[k+i]%mod,f[k]=(x+y)%mod,f[k+i]=(x-y+mod)%mod;
  reverse(f+1,f+n);
  for(int i=0,invn=inv(n,mod);i<n;i++)f[i]=1ll*f[i]*invn%mod;
}
void poly_multiply(unsigned a[],int n,unsigned b[],int m,unsigned c[]){
  for(int i=0;i<=n;i++)f[i]=a[i];
  for(int i=0;i<=m;i++)g[i]=b[i];
  init(2<<__lg(n+m),3),DIF(2<<__lg(n+m),f),DIF(2<<__lg(n+m),g);
  for(int i=0;i<2<<__lg(n+m);i++)h[i]=1ll*f[i]*g[i]%mod;
  DIT(2<<__lg(n+m),h);
  for(int i=0;i<=n+m;i++)c[i]=h[i];
}

CompilationN/AN/ACompile ErrorScore: N/A


Judge Duck Online | 评测鸭在线
Server Time: 2025-04-02 22:09:43 | Loaded in 0 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠