zoukankan      html  css  js  c++  java
  • UOJ #34

    #34. 多项式乘法

     统计

    这是一道模板题。

    给你两个多项式,请输出乘起来后的多项式。

    输入格式

    第一行两个整数 nn 和 mm,分别表示两个多项式的次数。

    第二行 n+1n+1 个整数,表示第一个多项式的 00 到 nn 次项系数。

    第三行 m+1m+1 个整数,表示第二个多项式的 00 到 mm 次项系数。

    输出格式

    一行 n+m+1n+m+1 个整数,表示乘起来后的多项式的 00 到 n+mn+m 次项系数。

    样例一

    input

    1 2
    1 2
    1 2 1
    
    

    output

    1 4 5 2
    
    

    explanation

    (1+2x)(1+2x+x2)=1+4x+5x2+2x3(1+2x)⋅(1+2x+x2)=1+4x+5x2+2x3。

    限制与约定

    0n,m1050≤n,m≤105,保证输入中的系数大于等于 00 且小于等于 99。

    时间限制1s1s

    空间限制256MB256MB

    下载

    样例数据下载

    没啥好说,直接上代码

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<algorithm>
    #include<cstring>
    #include<complex>
    #define N 262144+6
    #define pi acos(-1)
    using namespace std;
    int read()
    {
        int x=0,f=1;char s=getchar();
        while(s>'9' || s<'0'){if(s=='-')f=-1;s=getchar();}
        while(s<='9' && s>='0'){x=x*10+s-'0';s=getchar();}
        return x*f;
    }
    typedef complex<double> E;
    E a[N],b[N];
    int re[N],n,m,L=0;
    void fft(E *a,int f)
    {
        for(int i=0;i<n;i++)if(i<re[i])swap(a[i],a[re[i]]);
        for(int i=1;i<n;i<<=1)
        {
            E wn(cos(pi/i),f*sin(pi/i));
            for(int p=i<<1,j=0;j<n;j+=p)
            {
                E w(1,0);
                for(int k=0;k<i;k++,w*=wn)
                {
                    E x=a[j+k],y=w*a[j+k+i];
                    a[j+k]=x+y;a[j+k+i]=x-y;
                }
            }
        }
        if(f==-1)for(int i=0;i<n;i++)a[i]/=n;
    }
    int main()
    {
        n=read();m=read();
        for(int i=0,x;i<=n;i++)x=read(),a[i]=x;
        for(int i=0,x;i<=m;i++)x=read(),b[i]=x;
        m=m+n;for(n=1;n<=m;n<<=1)L++;L--;
        for(int i=0;i<n;i++)re[i]=(re[i>>1]>>1)|((i&1)<<L);
        fft(a,1);fft(b,1);
        for(int i=0;i<=n;i++)a[i]=a[i]*b[i];
        fft(a,-1);
        for(int i=0;i<=m;i++)printf("%d ",(int)(a[i].real()+0.5));
        return 0;
    }
  • 相关阅读:
    Storyboard里面的几种Segue区别和视图的切换
    2014年12月英语单词
    测试和调试的区别
    黑苹果安装教程(一)
    IOS基础——IOS学习路线图(一)
    遇到Wampserver遇到的问题
    产生不重复的数字
    简单的布局
    2014年8月
    算法小全
  • 原文地址:https://www.cnblogs.com/fdfzhyf/p/8659837.html
Copyright © 2011-2022 走看看