提交记录 2175


用户 题目 状态 得分 用时 内存 语言 代码长度
partychicken 1002. 测测你的多项式乘法 Compile Error 0 0 ns 0 KB C 1.63 KB
提交时间 评测时间
2018-06-22 13:02:34 2020-07-31 20:59:32
using namespace std;

const int MAXN=1e7+10;

const double pi=acos(-1.0);

struct Complex
{
    double x,y;
    Complex (double xx=0,double yy=0){x=xx,y=yy;}

    Complex operator + (const Complex &b)
    {
        return Complex(this->x+b.x,this->y+b.y);
    }
    Complex operator - (const Complex &b)
    {
        return Complex(this->x-b.x,this->y-b.y);
    }
    Complex operator * (const Complex &b)
    {
        return Complex(this->x*b.x-this->y*b.y,this->x*b.y+this->y*b.x);
    }
}a[MAXN],b[MAXN];

int n,m;
int l,r[MAXN];
int limit=1;

void FFT(Complex *A,int opt)
{
    for(int i=0;i<limit;i++)
    {
        if(i<r[i])
        {
            swap(A[i],A[r[i]]);
        }
    }
    for(int mid=1;mid<limit;mid<<=1)
    {
        Complex Wn(cos(pi/mid),opt*sin(pi/mid));
        for(int R=mid<<1,j=0;j<limit;j+=R)
        {
            Complex w(1,0);
            for(int k=0;k<mid;k++,w=w*Wn)
            {
                Complex x=A[j+k],y=w*A[j+mid+k];
                A[j+k]=x+y;
                A[j+mid+k]=x-y;
            }
        }
    }
}

void poly_multiply(unsigned *a, int n, unsigned *b, int m, unsigned *c)
{
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    cin>>n>>m;
    for(int i=0;i<=n;i++)
    {
        cin>>a[i].x;
    }
    for(int j=0;j<=m;j++)
    {
        cin>>b[j].x;
    }
    while(limit<=n+m)
    {
        limit<<=1;
        ++l;
    }
    for(int i=0;i<limit;i++)
    {
        r[i]=(r[i>>1]>>1)|((i&1)<<(l-1));
    }
    FFT(a,1);
    FFT(b,1);
    for(int i=0;i<=limit;i++)
    {
        a[i]=a[i]*b[i];
    }
    FFT(a,-1);
    for(int i=0;i<=n+m;i++)
    {
        c[i]=(int)(a[i].x/limit+0.5);
    }
}


CompilationN/AN/ACompile ErrorScore: N/A


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