提交记录 19489


用户 题目 状态 得分 用时 内存 语言 代码长度
x383494 1002i. 【模板题】多项式乘法 Accepted 100 75.973 ms 100892 KB C++ 1.56 KB
提交时间 评测时间
2023-05-30 22:41:12 2023-05-31 22:34:42
#include <cstdio>
#include <algorithm>
#include <vector>
#include <cmath>
#define UP(i, s, e) for(auto i=s; i!=e; ++i)
namespace m{ // } 
constexpr double pi = 3.1415926535897932;
struct CC{
	double real, imag;
	CC(double r=0, double i=0){ real = r, imag = i; }
	CC operator=(CC b){
		CC& a = *this;
		a.real = b.real, a.imag = b.imag;
		return a;
	}
	CC operator+(CC b){
		CC& a = *this;
		return CC(a.real+b.real, a.imag+b.imag);
	}
	CC operator-(CC b){
		CC& a = *this;
		return CC(a.real-b.real, a.imag-b.imag);
	}
	CC operator*(CC b){
		CC& a = *this;
		return CC(a.real*b.real-a.imag*b.imag, a.real*b.imag+a.imag*b.real);
	}
};
void change(CC *y, int len){
	std::vector<int> rev;
	rev.reserve(len);
	rev[0] = 0;
	UP(i, 1, len){
		rev[i] = rev[i>>1] >> 1;
		if(i&1) rev[i] |= len>>1;
	}
	UP(i, 0, len) if(i<rev[i]) std::swap(y[i], y[rev[i]]);
}
void fft(CC *y, int len, int on){
	change(y, len);
	for(int h=2; h<=len; h<<=1){
		CC wn(cos(2*pi/h), on*sin(2*pi/h));
		for(int j=0; j<len; j+=h){
			CC w(1);
			UP(k, j, j+h/2){
				CC u = y[k], v = w * y[k+h/2];
				y[k] = u+v, y[k+h/2] = u-v;
				w = w * wn;
			}
		}
	}
	if(on == -1) UP(i, 0, len){
		y[i].real /= len;
	}
}
CC ia[1<<21], ib[1<<21], ic[1<<21];
int in, im;
void work(){
	scanf("%d%d", &in, &im);
	UP(i, 0, in+1) scanf("%lf", &ia[i].real);
	UP(i, 0, im+1) scanf("%lf", &ib[i].real);
	int len = 1;
	while(len < in+im+1) len<<=1;
	fft(ia, len, 1);
	fft(ib, len, 1);
	UP(i, 0, len){
		ic[i] = ia[i] * ib[i];
	}
	fft(ic, len, -1);
	UP(i, 0, in+im+1){
		printf("%d ", (int)(ic[i].real+0.5));
	}
}
}
int main(){m::work(); return 0;}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #110.729 ms96 MB + 32 KBAcceptedScore: 0

Subtask #1 Testcase #275.973 ms98 MB + 460 KBAcceptedScore: 0

Subtask #1 Testcase #340.44 ms96 MB + 824 KBAcceptedScore: 100

Subtask #1 Testcase #440.773 ms96 MB + 812 KBAcceptedScore: 0

Subtask #1 Testcase #511.081 ms96 MB + 32 KBAcceptedScore: 0

Subtask #1 Testcase #610.899 ms96 MB + 32 KBAcceptedScore: 0

Subtask #1 Testcase #711.032 ms96 MB + 32 KBAcceptedScore: 0

Subtask #1 Testcase #869.131 ms98 MB + 192 KBAcceptedScore: 0

Subtask #1 Testcase #969.211 ms98 MB + 192 KBAcceptedScore: 0

Subtask #1 Testcase #1063.186 ms97 MB + 948 KBAcceptedScore: 0

Subtask #1 Testcase #1175.734 ms98 MB + 540 KBAcceptedScore: 0

Subtask #1 Testcase #1275.402 ms97 MB + 420 KBAcceptedScore: 0

Subtask #1 Testcase #1311.289 ms96 MB + 32 KBAcceptedScore: 0


Judge Duck Online | 评测鸭在线
Server Time: 2024-04-20 07:38:46 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用