http://acm.hdu.edu.cn/showproblem.php?pid=1402

快速傅里叶变换优化的高精度乘法。

https://blog.csdn.net/ggn_2015/article/details/68922404 这个写的很详细了。

 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<iostream>
#include<vector>
#include<complex>
using namespace std;
#define LL long long
const int maxn=;
typedef complex< double >cd;
char s1[maxn]={},s2[maxn]={};
int ans[maxn]={};
int rev[maxn]={}; int s,bit;
cd a[maxn]={},b[maxn]={};
double Pi;
inline void getrev(){ for(int i=;i<s;i++)rev[i]=(rev[i>>]>>)|((i&)<<(bit-)); }
inline void fft(cd *c,int n,int dft){
for(int i=;i<=s;i++)if(rev[i]>i)swap(c[i],c[rev[i]]);
for(int step=;step<n;step<<=){
cd shu=exp(cd(,dft*Pi/step));
for(int i=;i<n;i+=step<<){
cd z=cd(,);
for(int j=i;j<i+step;j++){
cd x=c[j];cd y=c[j+step]*z;
c[j]=x+y; c[j+step]=x-y;
z*=shu;
}
}
}
if(dft==-)for(int i=;i<n;i++)c[i]/=n;
}
int main(){
cd cle(,);Pi=2.0*acos(0.0);
while(~scanf("%s%s",s1,s2)){
memset(rev,,sizeof(rev));
int l1=strlen(s1),l2=strlen(s2),n=l1+l2-;
bit=;s=; for(;s<n;++bit)s<<=;
getrev();
for(int i=;i<=s;i++){a[i]=cle;b[i]=cle;}
for(int i=;i<l1;i++)a[i]=(double)(s1[l1-i-]-'');
for(int i=;i<l2;i++)b[i]=(double)(s2[l2-i-]-'');
fft(a,s,);fft(b,s,);
for(int i=;i<s;i++)a[i]*=b[i];
fft(a,s,-);
memset(ans,,sizeof(ans));
for(int i=;i<s;i++){
ans[i]+=(int)(a[i].real()+0.5);
ans[i+]+=ans[i]/;
ans[i]%=;
}
int i;
for(i=l1+l2;!ans[i]&&i>;--i);
if(i==)printf("%d\n",ans[]);
else{
for(;i>=;--i)printf("%d",ans[i]);
printf("\n");
}
}
return ;
}

HDU 1402 A * B Problem Plus 快速傅里叶变换 FFT 多项式的更多相关文章

  1. HDU - 1402 A * B Problem Plus FFT裸题

    http://acm.hdu.edu.cn/showproblem.php?pid=1402 题意: 求$a*b$ 但是$a$和$b$的范围可以达到 $1e50000$ 题解: 显然...用字符串模拟 ...

  2. hdu 1402 A * B Problem Plus FFT

    /* hdu 1402 A * B Problem Plus FFT 这是我的第二道FFT的题 第一题是完全照着别人的代码敲出来的,也不明白是什么意思 这个代码是在前一题的基础上改的 做完这个题,我才 ...

  3. 快速傅里叶变换FFT

    多项式乘法 #include <cstdio> #include <cmath> #include <algorithm> #include <cstdlib ...

  4. [学习笔记] 多项式与快速傅里叶变换(FFT)基础

    引入 可能有不少OIer都知道FFT这个神奇的算法, 通过一系列玄学的变化就可以在 $O(nlog(n))$ 的总时间复杂度内计算出两个向量的卷积, 而代码量却非常小. 博主一年半前曾经因COGS的一 ...

  5. 快速傅里叶变换FFT& 数论变换NTT

    相关知识 时间域上的函数f(t)经过傅里叶变换(Fourier Transform)变成频率域上的F(w),也就是用一些不同频率正弦曲线的加 权叠加得到时间域上的信号. \[ F(\omega)=\m ...

  6. 多项式 之 快速傅里叶变换(FFT)/数论变换(NTT)/常用套路【入门】

    原文链接https://www.cnblogs.com/zhouzhendong/p/Fast-Fourier-Transform.html 多项式 之 快速傅里叶变换(FFT)/数论变换(NTT)/ ...

  7. 快速傅里叶变换(FFT)

    扯 去北京学习的时候才系统的学习了一下卷积,当时整理了这个笔记的大部分.后来就一直放着忘了写完.直到今天都腊月二十八了,才想起来还有个FFT的笔记没整完呢.整理完这个我就假装今年的任务全都over了吧 ...

  8. 快速傅里叶变换(FFT)_转载

    FFTFFT·Fast  Fourier  TransformationFast  Fourier  Transformation快速傅立叶变换 P3803 [模板]多项式乘法(FFT) 参考上文 首 ...

  9. 基于python的快速傅里叶变换FFT(二)

    基于python的快速傅里叶变换FFT(二)本文在上一篇博客的基础上进一步探究正弦函数及其FFT变换. 知识点  FFT变换,其实就是快速离散傅里叶变换,傅立叶变换是数字信号处理领域一种很重要的算法. ...

随机推荐

  1. Hadoop生态圈-Flume的主流source源配置

    Hadoop生态圈-Flume的主流source源配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客只是配置的是Flume主流的Source,想要了解更详细的配置信息请参 ...

  2. python学习笔记6--双色球需求实现

    # 5,随机产生5条双色球号码 # blue 存蓝色的求 01,02 # red 存红色的求 17,16,03 # date存生成的时间,精确达到秒 #处理 import random,datetim ...

  3. html canvas非正方旋转和缩放...写的大多是正方的有人表示一直看正方的看厌了

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. Javascript加速运动与减速运动

    加速运动,即一个物体运动时速度越来越快:减速运动,即一个物体运动时速度越来越慢.现在用Javascript来模拟这两个效果,原理就是用setInterval或setTimeout动态改变一个元素与另外 ...

  5. MySQL-存储过程procedure

    存储过程:是一个SQL语句集合,当主动去调用存储过程时,其中内部的SQL语句会按照逻辑执行. 1.创建存储过程: -- 创建存储过程 delimiter // create procedure p1( ...

  6. Manacher's Algorithm 马拉车算法(求最长回文串)

    作用:求一个字符串中的最长子串,同时还可以求所有子串的长度. 题目链接: https://vjudge.net/contest/254692#problem/B 最长回文串长度的代码: int Man ...

  7. Basic(消息)的一些属性及方法

    AMQP协议:是一个金融级的消息队列,确保消息万无一失 1.消息发布端的确认 手动确认消息是否已经发送 场景:发布消息到RabbitMQ中,我们需要知道这个消息是否发布成功了. *发布确认影响性能 c ...

  8. [mysql5.6]主从更换ip之后重新建立同步【转】

    情况时这样的: 主从系统 centos6.5 mysql5.6 由于机房迁移ip地址变了,导致原来的主动无法同步,于是需要重新建立主从关系. 主 192.168.1.23 从 192.168.1.22 ...

  9. ORACLE数据库数据文件转移方法(不同于move方法)

    1) 手动拷贝要转移的数据数据文件'd:\OracleData\GWTABLE42.DBF'到新的位置'E:\OracleData\GWTABLE42.DBF'. 2) 把数据文件所属的表空间Offl ...

  10. COM和.NET的互操作

    组件对象模型的基本知识         基于构件的软件开发日益流行,这里我吧自己在学校时整理的关于COM的一些东西献给大家,供初学者参考.一.组件(COM),是微软公司为了计算机工业的软件生产更加符合 ...