BZOJ 2179 FFT快速傅里叶
fft。
#include<set>
#include<map>
#include<ctime>
#include<queue>
#include<cmath>
#include<cstdio>
#include<vector>
#include<cstring>
#include<cstdlib>
#include<complex>
#include<iostream>
#include<algorithm>
#define maxn 131073
#define pi acos(-1)
using namespace std;
typedef complex<double> E;
int n,m,r[maxn],l=,c[maxn];
char s[maxn];
E a[maxn],b[maxn];
void fft(E *x,int f)
{
for (int i=;i<n;i++)
if (i<r[i]) swap(x[i],x[r[i]]);
for (int i=;i<n;i<<=)
{
E wn(cos(pi/i),f*sin(pi/i));
for (int j=;j<n;j+=(i<<))
{
E w(,);
for (int k=;k<i;k++)
{
E r1,r2;
r1=x[j+k];r2=w*x[i+j+k];
x[j+k]=r1+r2;x[j+k+i]=r1-r2;
w*=wn;
}
}
}
if (f==-)
{
for (int i=;i<n;i++)
x[i]/=n;
}
}
int main()
{
scanf("%d",&n);n--;
scanf("%s",s);for (int i=;i<=n;i++) a[i]=s[n-i]-'';
scanf("%s",s);for (int i=;i<=n;i++) b[i]=s[n-i]-'';
m=*n;
for (n=;n<=m;n<<=) l++;
for (int i=;i<n;i++) r[i]=((r[i>>]>>)|((i&)<<(l-)));
fft(a,);fft(b,);
for (int i=;i<n;i++)
a[i]*=b[i];
fft(a,-);
for (int i=;i<=m;i++)
c[i]=(int)(a[i].real()+0.1);
for (int i=;i<=m;i++)
{
if (c[i]>=)
{
c[i+]+=c[i]/;c[i]%=;
if (i==m) m++;
}
}
for (int i=m;i>=;i--) printf("%d",c[i]);
printf("\n");
return ;
}
BZOJ 2179 FFT快速傅里叶的更多相关文章
- BZOJ 2179 FFT快速傅立叶 题解
bzoj 2179 Description 给出两个n位10进制整数x和y,你需要计算x*y. [题目分析] 高精裸题.练手. [代码] 1.手动高精 #include<cstdio> # ...
- BZOJ 2179: FFT快速傅立叶
2179: FFT快速傅立叶 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 2923 Solved: 1498[Submit][Status][Di ...
- bzoj 2179: FFT快速傅立叶 -- FFT
2179: FFT快速傅立叶 Time Limit: 10 Sec Memory Limit: 259 MB Description 给出两个n位10进制整数x和y,你需要计算x*y. Input ...
- bzoj 2179 FFT快速傅立叶 —— FFT
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2179 默写板子,注释的是忘记的地方. 代码如下: #include<iostream& ...
- 【刷题】BZOJ 2179 FFT快速傅立叶
Description 给出两个n位10进制整数x和y,你需要计算x*y. Input 第一行一个正整数n. 第二行描述一个位数为n的正整数x. 第三行描述一个位数为n的正整数y. Output 输出 ...
- BZOJ 2179 FFT快速傅立叶 ——FFT
[题目分析] 快速傅里叶变换用于高精度乘法. 其实本质就是循环卷积的计算,也就是多项式的乘法. 两次蝴蝶变换. 二进制取反化递归为迭代. 单位根的巧妙取值,是的复杂度成为了nlogn 范德蒙矩阵计算逆 ...
- BZOJ 2179 FFT模板
思路:FFT板子题 //By SiriusRen #include <cstdio> #include <complex> using namespace std; typed ...
- bzoj 2179 FFT
求两个高精度的乘法. 根据高位低位,填入多项式的系数,求两个卷积,然后进位操作.
- 【BZOJ】【2179】FFT快速傅里叶
FFT 做的第二道用到FFT的……好吧其实还是模板题-_-b 百度上说好像分治也能做……不过像FFT这种敲模板的还是省事=.= /*********************************** ...
随机推荐
- 【Asp.Net MVC-视频】
Asp.Net MVC官网网发布的pluralsight视频教学: http://pluralsight.com/training/Player?author=scott-allen&name ...
- uva 12086 树状数组
树状数组 #include <cstdio> #include <cstdlib> #include <cmath> #include <map> #i ...
- CF 86D Powerful array
离线+分块 将n个数分成sqrt(n)块. 对所有询问进行排序,排序标准: 1. Q[i].left /block_size < Q[j].left / block_size (块号 ...
- Strust2最基本使用
制作一个登陆表单,然后在另一个页面显示提交的内容,简单的一个小工程. 页面: //login.jsp <form action="login.action" method=& ...
- Linqer工具
这些天写Linq挺烦人的,就上网搜搜可有什么好的sql转Linq的工具,咦,马上就看上了Linqer. 哈哈,介绍一下使用方法吧: 官方下载网站:http://sqltolinq.com/downlo ...
- JS创建对象
本人常用的创建对象的方式,仅供参考,欢迎吐槽,谢谢! 创建对象1.对象字面量,即使用大括号,如下: (function(){ var obj = { id: 1, desc: '创建对象测试开始啦!' ...
- 李洪强iOS之Foundation框架—字符串
Foundation框架—字符串 一.Foundation框架中一些常用的类 字符串型: NSString:不可变字符串 NSMutableString:可变字符串 集合型: 1) NSArray:O ...
- Android:EditText 常用属性
属性 作用 android:hint="输入邮箱/用户名" 提示信息 android:inputType="textPassword" 设置文本的类型 andr ...
- Java ssh 访问windows/Linux
Java ssh 访问windows/Linux 工作中遇到的问题: Java code运行在一台机器上,需要远程到linux的机器同时执行多种命令.原来采用的方法是直接调用ssh命令或者调用pli ...
- kaili开启sshd服务
使用xshell远程连接kali 2.0时要开启kaili上的sshd服务,具体方法如下: 命令: vim /etc/ssh/sshd_config # Package generated confi ...