提交记录 12021


用户 题目 状态 得分 用时 内存 语言 代码长度
panyf 1002i. 【模板题】多项式乘法 Accepted 100 65.14 ms 10772 KB C++11 887 B
提交时间 评测时间
2020-03-08 18:47:50 2020-08-01 02:50:12
#include<cstdio>
#include<cmath>
const double PI=acos(-1);
const int N=262151;
struct C{
	double x,y;
	inline C operator+(C a)const{return{x+a.x,y+a.y};}
	inline C operator-(C a)const{return{x-a.x,y-a.y};}
	inline C operator*(C a)const{return{x*a.x-y*a.y,x*a.y+y*a.x};}
}a[N],b[N];
int n,r[N];
void fft(C*a,int b){
	C u,v,x,y;
	int i,j,k,l,p;
	for(i=0;i<n;++i)if(i<r[i])u=a[i],a[i]=a[r[i]],a[r[i]]=u;
	for(i=1;i<n;i<<=1)
	for(u={cos(PI/i),sin(PI/i)*b},j=0,l=i<<1;j<n;j+=l)
	for(v={1,0},k=j,p=j+i;k<p;++k,v=v*u)
	x=a[k],y=v*a[i+k],a[k]=x+y,a[i+k]=x-y;
}
int main(){
	int m,i,l=-1;
	scanf("%d%d",&n,&m);
	for(i=0;i<=n;++i)scanf("%lf",&a[i].x);
	for(i=0;i<=m;++i)scanf("%lf",&b[i].x);
	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);
	fft(a,1),fft(b,1);
	for(i=0;i<n;++i)a[i]=a[i]*b[i];
	fft(a,-1);
	for(i=0;i<=m;++i)printf("%d ",int(a[i].x/n+0.5));
	return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #111.04 us36 KBAcceptedScore: 0

Subtask #1 Testcase #264.959 ms10 MB + 452 KBAcceptedScore: 100

Subtask #1 Testcase #329.587 ms4 MB + 828 KBAcceptedScore: 0

Subtask #1 Testcase #429.568 ms4 MB + 816 KBAcceptedScore: 0

Subtask #1 Testcase #512.38 us36 KBAcceptedScore: 0

Subtask #1 Testcase #611.61 us36 KBAcceptedScore: 0

Subtask #1 Testcase #711.56 us36 KBAcceptedScore: 0

Subtask #1 Testcase #858.926 ms10 MB + 184 KBAcceptedScore: 0

Subtask #1 Testcase #958.842 ms10 MB + 184 KBAcceptedScore: 0

Subtask #1 Testcase #1052.78 ms9 MB + 940 KBAcceptedScore: 0

Subtask #1 Testcase #1165.14 ms10 MB + 532 KBAcceptedScore: 0

Subtask #1 Testcase #1265.139 ms9 MB + 412 KBAcceptedScore: 0

Subtask #1 Testcase #1310.41 us36 KBAcceptedScore: 0


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