提交记录 12811


用户 题目 状态 得分 用时 内存 语言 代码长度
panyf 1002i. 【模板题】多项式乘法 Accepted 100 70.796 ms 4632 KB C++11 795 B
提交时间 评测时间
2020-06-10 13:20:09 2020-08-01 02:59:10
#include<cstdio>
const int N=3e6+5,P=998244353;
int n,r[N],a[N],b[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 ntt(int*a,bool b){
	int i,j,k,l,p,u,v,x,y;
	for(i=0;i<n;++i)if(i<r[i])j=a[i],a[i]=a[r[i]],a[r[i]]=j;
	for(i=1;i<n;i<<=1)
	for(l=i<<1,u=qp(b?3:332748118,(P-1)/l),j=0;j<n;j+=l)
	for(v=1,k=j,p=j+i;k<p;++k,v=v*1ll*u%P)
	x=a[k],y=v*1ll*a[i+k]%P,a[k]=(a[k]=x+y)<P?a[k]:a[k]-P,a[i+k]=x<y?x-y+P:x-y;
}
int main(){
	int m,i,l=-1;
	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);
	for(m+=n,n=1;n<=m;n<<=1)++l;
	for(i=0;i<n;++i)r[i]=(r[i>>1]>>1)|((i&1)<<l);
	ntt(a,1),ntt(b,1);
	for(i=0;i<n;++i)a[i]=a[i]*1ll*b[i]%P;
	ntt(a,0),l=qp(n,P-2);
	for(i=0;i<=m;++i)printf("%d ",a[i]*1ll*l%P);
	return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #110.57 us28 KBAcceptedScore: 0

Subtask #1 Testcase #270.222 ms4 MB + 456 KBAcceptedScore: 0

Subtask #1 Testcase #332.247 ms1 MB + 820 KBAcceptedScore: 100

Subtask #1 Testcase #432.286 ms1 MB + 808 KBAcceptedScore: 0

Subtask #1 Testcase #511.69 us28 KBAcceptedScore: 0

Subtask #1 Testcase #611.01 us28 KBAcceptedScore: 0

Subtask #1 Testcase #710.78 us28 KBAcceptedScore: 0

Subtask #1 Testcase #864.546 ms4 MB + 188 KBAcceptedScore: 0

Subtask #1 Testcase #964.527 ms4 MB + 188 KBAcceptedScore: 0

Subtask #1 Testcase #1058.808 ms3 MB + 944 KBAcceptedScore: 0

Subtask #1 Testcase #1170.629 ms4 MB + 536 KBAcceptedScore: 0

Subtask #1 Testcase #1270.796 ms3 MB + 416 KBAcceptedScore: 0

Subtask #1 Testcase #139.71 us28 KBAcceptedScore: 0


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