生成函数的一般应用;
#include#include #include #include #include using namespace std;const int maxn=250000;const long double PI=acos(-1.0);struct cp{ long double r,i; cp(long double _r=0,long double _i=0):r(_r),i(_i){} cp operator+(const cp&a){ return cp(r+a.r,i+a.i); } cp operator-(const cp&a){ return cp(r-a.r,i-a.i); } cp operator*(const cp&a){ return cp(r*a.r-i*a.i,r*a.i+a.r*i); } void pu(long double _r=0,long double _i=0){ r=_r;i=_i; }}wn,w,A[4][maxn],tmp[maxn],x,y;int n,dig[maxn],rev[maxn],L;void fft(cp a[],int flag){ for(int i=0;i >=1)dig[ll++]=t&1; for(int j=0;j <<1)|dig[j]; } for(int i=len;i