提交记录 17744


用户 题目 状态 得分 用时 内存 语言 代码长度
final_trump 1002i. 【模板题】多项式乘法 Wrong Answer 0 52.682 ms 8736 KB C++11 1.92 KB
提交时间 评测时间
2022-06-29 19:37:02 2022-06-29 19:37:05
#include<bits/stdc++.h>
using namespace std;
typedef long long lxl;
const int Gr=3,base=18;
const int MOD=998244353;

template<typename Type=int> inline Type read(){
	Type x=0,f=1;char ch=getchar();
	while(!isdigit(ch))(ch=='-')&&(f=-f),ch=getchar();
	while(isdigit(ch)) x=x*10+ch-'0',ch=getchar();
	return x*f;
}
template<typename Type> inline bool chkmin(Type &a,Type b){return (b<a)?(a=b,1):0;}
template<typename Type> inline bool chkmax(Type &a,Type b){return (a<b)?(a=b,1):0;}
inline int expow(int n,int k){
	int ans=1;
	for(;k;k>>=1,n=1ll*n*n%MOD)(k&1)&&(ans=1ll*ans*n%MOD);
	return ans;
}

int w[1<<base];
inline void init(){
	for(int len=1;len<(1<<base);len<<=1){
		const int tmp=expow(Gr,MOD/(len<<1));w[len]=1;
		for(int i=1;i<len;++i) w[i|len]=1ll*w[(i-1)|len]*tmp%MOD;
	}
}
inline void DFT(int *a,int n){
	int i,j,len;
	static lxl T[1<<base];
	for(i=0;i<n;++i) T[i]=a[i];
	for(len=n>>1;len;len>>=1){
		if(len==(n>>15)) for(i=0;i<n;++i) T[i]%=MOD;
		for(i=0;i<n;i+=(len<<1))
			for(j=0;j<len;++j){
				const int tmp=T[i|j|len]%MOD;
				T[i|j|len]=1ull*(T[i|j]+MOD-tmp)*w[j|len]%MOD;
				T[i|j]+=tmp;
			}
	}
	for(i=0;i<n;++i) a[i]=T[i]%MOD;
}
inline void IDFT(int *a,int n){
	int i,j,len;
	static lxl T[1<<base];
	for(i=0;i<n;++i) T[i]=a[i];
	for(len=1;len<n;len<<=1){
		if(len==(1<<15)) for(i=0;i<n;++i) T[i]%=MOD;
		for(i=0;i<n;i+=(len<<1))
			for(j=0;j<len;++j){
				const int tmp=1ull*T[i|j|len]*w[j|len]%MOD;
				T[i|j|len]=T[i|j]+MOD-tmp;T[i|j]+=tmp;
			}
	}
	const int tmp=MOD-MOD/n;
	for(i=0;i<n;++i) a[i]=1ull*T[i]*tmp%MOD;
	reverse(a+1,a+n);
}

int n,f[1<<base];
int m,g[1<<base];

int main(){
//	freopen("P3803_4.in","r",stdin);
//	freopen("test.out","w",stdout);
	int i,lim;init();
	n=read()+1;m=read()+1;
	for(i=0;i<n;++i) f[i]=read();
	for(i=0;i<m;++i) g[i]=read();
	for(lim=1;lim<(n+m-1);lim<<=1);
	DFT(f,lim);DFT(g,lim);
	for(i=0;i<lim;++i) f[i]=1ll*f[i]*g[i]%MOD;
	IDFT(f,lim);
	for(i=0;i<n+m-1;++i) printf("%d ",f[i]);
	return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #11.099 ms1 MB + 52 KBAcceptedScore: 0

Subtask #1 Testcase #252.106 ms8 MB + 464 KBAcceptedScore: 0

Subtask #1 Testcase #323.631 ms4 MB + 332 KBAcceptedScore: 100

Subtask #1 Testcase #423.607 ms4 MB + 320 KBAcceptedScore: 0

Subtask #1 Testcase #51.102 ms1 MB + 52 KBAcceptedScore: 0

Subtask #1 Testcase #61.099 ms1 MB + 52 KBAcceptedScore: 0

Subtask #1 Testcase #71.099 ms1 MB + 52 KBAcceptedScore: 0

Subtask #1 Testcase #847.027 ms8 MB + 196 KBAcceptedScore: 0

Subtask #1 Testcase #946.97 ms8 MB + 196 KBAcceptedScore: 0

Subtask #1 Testcase #1041.93 ms7 MB + 952 KBAcceptedScore: 0

Subtask #1 Testcase #1152.417 ms8 MB + 544 KBAcceptedScore: 0

Subtask #1 Testcase #1252.682 ms7 MB + 424 KBAcceptedScore: 0

Subtask #1 Testcase #131.098 ms1 MB + 52 KBWrong AnswerScore: -100


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