FFT 模板 大数相乘

大数乘法


基准时间限制:2 秒 空间限制:131072 KB 分值: 80 难度:5级算法题
收藏
关注
给出2个大整数A,B,计算A*B的结果。
Input
第1行:大数A
第2行:大数B
(A,B的长度 <= 100000,A,B >= 0)
Output
输出A * B
Input示例
123456
234567
Output示例
28958703552




#include
#include
#include
#include
using namespace std;

const double PI = acos(-1.0);
//复数结构体
struct Complex
{
    double r,i;
    Complex(double _r=0.0,double _i=0.0)
    {
        r = _r; i = _i;
    }
    Complex operator +(const Complex &b)
    {
        return Complex(r+b.r,i+b.i);
    }
    Complex operator -(const Complex &b)
    {
        return Complex(r-b.r,i-b.i);
    }
    Complex operator *(const Complex &b)
    {
        return Complex(r*b.r-i*b.i,r*b.i+i*b.r);
    }
};
/*
 * 进行FFT和IFFT前的反转变换。
 * 位置i和 (i二进制反转后位置)互换
 * len必须去2的幂
 */
void change(Complex y[],int len)
{
    int i=1,j=len/2,k;
    for(;i=k){
            j-=k;
            k/=2;
        }
        if(j0)
            len--;
        for(int i=len;i>=0;i--)
            printf("%c",sum[i]+'0');
        printf("\n");
    }
    return 0;
}


你可能感兴趣的:(通用模板,数,论,acm)