提交记录 12812


用户 题目 状态 得分 用时 内存 语言 代码长度
panyf 1002i. 【模板题】多项式乘法 Accepted 100 56.291 ms 5680 KB C++11 956 B
提交时间 评测时间
2020-06-10 13:26:37 2020-08-01 02:59:13
#include<bits/stdc++.h>
using namespace std; 
const int N=21e5+3,P=998244353;
int n,r[N],a[N],b[N],w[N];
int qp(int a,int b){
	int r=1;
	for(;b;b>>=1,a=a*1ll*a%P)if(b&1)r=r*1ll*a%P;
	return r;
}
void pre(int m){
	int i,j,g;
	for(n=1;n<=m;n<<=1);
	for(i=0,w[j=n>>1]=1;i<n;++i)r[i]=(r[i>>1]>>1)|((i&1)?j:0);
	for(i=j+1,g=qp(3,(P-1)/n);i<n;++i)w[i]=w[i-1]*1ll*g%P;
	for(i=j-1;i>0;--i)w[i]=w[i<<1];
}
void ntt(int*a,bool b=0){
	int i,j,k,x,*g,*u,*v;
	for(i=0;i<n;++i)if(i<r[i])swap(a[i],a[r[i]]);
	for(i=1;i<n;i<<=1)for(j=0;j<n;j+=i<<1)for(k=0,g=w+i,u=a+j,v=u+i;k<i;++k)
	x=g[k]*1ll*v[k]%P,v[k]=u[k]<x?u[k]-x+P:u[k]-x,u[k]=(u[k]+=x)<P?u[k]:u[k]-P;
	if(b)for(i=0,reverse(a+1,a+n),j=P-(P-1)/n;i<n;++i)a[i]=a[i]*1ll*j%P;
}
int main(){
	int m,i;
	scanf("%d%d",&n,&m);
	for(i=0;i<=n;++i)scanf("%d",a+i);
	for(i=0;i<=m;++i)scanf("%d",b+i);
	pre(m+=n),ntt(a),ntt(b);
	for(i=0;i<n;++i)a[i]=a[i]*1ll*b[i]%P;
	ntt(a,1);
	for(i=0;i<=m;++i)printf("%d ",a[i]);
	return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #137.23 us52 KBAcceptedScore: 0

Subtask #1 Testcase #255.791 ms5 MB + 480 KBAcceptedScore: 100

Subtask #1 Testcase #325.638 ms2 MB + 332 KBAcceptedScore: 0

Subtask #1 Testcase #425.694 ms2 MB + 320 KBAcceptedScore: 0

Subtask #1 Testcase #540.11 us52 KBAcceptedScore: 0

Subtask #1 Testcase #637.95 us52 KBAcceptedScore: 0

Subtask #1 Testcase #737.53 us52 KBAcceptedScore: 0

Subtask #1 Testcase #849.957 ms5 MB + 212 KBAcceptedScore: 0

Subtask #1 Testcase #950.03 ms5 MB + 212 KBAcceptedScore: 0

Subtask #1 Testcase #1044.187 ms4 MB + 968 KBAcceptedScore: 0

Subtask #1 Testcase #1156.291 ms5 MB + 560 KBAcceptedScore: 0

Subtask #1 Testcase #1256.214 ms4 MB + 440 KBAcceptedScore: 0

Subtask #1 Testcase #1336.58 us52 KBAcceptedScore: 0


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