#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1.0);
struct Complex {
double x, y;
Complex(double _x=0.0,double _y = 0.0) {
x = _x;
y = _y;
}
Complex operator -(const Complex &b) const {
return Complex(x-b.x, y-b.y);
}
Complex operator +(const Complex &b) const {
return Complex(x+b.x, y+b.y);
}
Complex operator *(const Complex &b) const {
return Complex(x*b.x-y*b.y, x*b.y+y*b.x);
}
};
void change(Complex y[], int len) {
int i,j,k;
for(i = 1, j = len/2; i < len-1; i++) {
if(i < j) swap(y[i],y[j]);
k = len/2;
while(j >= k) {
j -= k;
k /= 2;
}
if(j < k) j += k;
}
}
void fft(Complex y[], int len, int on) {
change(y, len);
for(int h = 2; h <= len; h <<=
高精度乘法(FFT)
最新推荐文章于 2023-04-05 16:06:55 发布