提交记录 13290


用户 题目 状态 得分 用时 内存 语言 代码长度
ZYF_B 1002i. 【模板题】多项式乘法 Accepted 100 67.776 ms 5680 KB C++ 1.59 KB
提交时间 评测时间
2020-08-01 09:52:54 2020-08-01 09:52:59
#include<bits/stdc++.h>
#define ll long long
#define re register
#define INF 2147483647
using namespace std;

inline int read()
{
	int f=1,x=0;char s=getchar();
	while(s<'0'||s>'9')
	{
		if(s=='-') f=-1;
		s=getchar();
	}
	while(s>='0'&&s<='9')
	{
		x=x*10+s-48;
		s=getchar();
	}
	return f*x;
}

const int p=998244353,G=3;
const int N=1350000; 
inline int ksm(int a,int b)
{
	int ans=1;
	for(;b;b>>=1,a=1ll*a*a%p)
		if(b&1) ans=1ll*ans*a%p;
	return ans;	
}

inline int add(int a,int b) 
{
	return a+b>=p?a+b-p:a+b;
}

inline int sub(int a,int b)
{
	return a-b<0?a-b+p:a-b;	
} 

const int invG=ksm(G,p-2);
int rev[N<<1],rev_len,n,m;
int f[N<<1],g[N<<1],ans[N<<1];

inline void getrev(int n)
{
	if(rev_len==n) return;
	rev_len=n;
	for(int i=0;i<n;i++)
		rev[i]=(rev[i>>1]>>1)|((i&1)?n>>1:0);
}

void NTT(int *f,bool flag,int n)
{
	getrev(n);
	for(int i=0;i<n;i++)
		if(i<rev[i]) swap(f[i],f[rev[i]]);
	for(int len=2;len<=n;len<<=1)
	{
		int w=ksm((flag?G:invG),(p-1)/len);
		for(int k=0;k<n;k+=len)
		{
			int buf=1;
			for(int i=k;i<k+(len>>1);i++,buf=1ll*buf*w%p)
			{
				int tmp=1ll*buf*f[i+(len>>1)]%p;
				f[i+(len>>1)]=sub(f[i],tmp);
				f[i]=add(f[i],tmp);
			} 
		}
	}
	if(!flag)
	{
		int invn=ksm(n,p-2);
		for(int i=0;i<n;i++) f[i]=1ll*f[i]*invn%p;
	}
}

void times(int *f,int n,int *g,int m,int *ans)
{
	int len=1;
	for(;len<=n+m;len<<=1);
	NTT(f,1,len),NTT(g,1,len);
	for(int i=0;i<len;i++) ans[i]=1ll*f[i]*g[i]%p;
	NTT(ans,0,len); 
}

int main()
{
	n=read(),m=read();
	for(int i=0;i<=n;i++) f[i]=read();
	for(int i=0;i<=m;i++) g[i]=read();
	times(f,n,g,m,ans);
	for(int i=0;i<=n+m;i++) printf("%d ",ans[i]);
	return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #136.39 us52 KBAcceptedScore: 0

Subtask #1 Testcase #267.481 ms5 MB + 480 KBAcceptedScore: 0

Subtask #1 Testcase #330.854 ms2 MB + 332 KBAcceptedScore: 100

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

Subtask #1 Testcase #538.36 us52 KBAcceptedScore: 0

Subtask #1 Testcase #636.89 us52 KBAcceptedScore: 0

Subtask #1 Testcase #736.69 us52 KBAcceptedScore: 0

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

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

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

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

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

Subtask #1 Testcase #1334.44 us52 KBAcceptedScore: 0


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