提交记录 12813


用户 题目 状态 得分 用时 内存 语言 代码长度
panyf 1002i. 【模板题】多项式乘法 Accepted 100 55.403 ms 5680 KB C++11 944 B
提交时间 评测时间
2020-06-10 13:27:57 2020-08-01 02:59:15
#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,x,*g,*u,*v,*o;
	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(g=w+i,u=a+j,o=v=u+i;u!=o;++g,++u,++v)
	x=*g*1ll**v%P,*v=*u<x?*u-x+P:*u-x,*u=(*u+=x)<P?*u:*u-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 #136.17 us52 KBAcceptedScore: 0

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

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

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

Subtask #1 Testcase #538.14 us52 KBAcceptedScore: 0

Subtask #1 Testcase #637.6 us52 KBAcceptedScore: 0

Subtask #1 Testcase #736.57 us52 KBAcceptedScore: 0

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

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

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

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

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

Subtask #1 Testcase #1336.66 us52 KBAcceptedScore: 0


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