提交记录 12022


用户 题目 状态 得分 用时 内存 语言 代码长度
panyf 1002i. 【模板题】多项式乘法 Accepted 100 70.746 ms 4620 KB C++11 796 B
提交时间 评测时间
2020-03-08 18:48:32 2020-08-01 02:50:15
#include<cstdio>
const int N=262151,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.19 us28 KBAcceptedScore: 0

Subtask #1 Testcase #270.196 ms4 MB + 444 KBAcceptedScore: 100

Subtask #1 Testcase #332.276 ms1 MB + 820 KBAcceptedScore: 0

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

Subtask #1 Testcase #511.02 us28 KBAcceptedScore: 0

Subtask #1 Testcase #610.64 us28 KBAcceptedScore: 0

Subtask #1 Testcase #710.2 us28 KBAcceptedScore: 0

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

Subtask #1 Testcase #964.593 ms4 MB + 176 KBAcceptedScore: 0

Subtask #1 Testcase #1058.887 ms3 MB + 932 KBAcceptedScore: 0

Subtask #1 Testcase #1170.646 ms4 MB + 524 KBAcceptedScore: 0

Subtask #1 Testcase #1270.746 ms3 MB + 404 KBAcceptedScore: 0

Subtask #1 Testcase #138.61 us28 KBAcceptedScore: 0


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