【BZOJ2179】FFT快速傅立叶
【BZOJ2179】FFT快速傅立叶
Description
Input
Output
Sample Input
3
4
Sample Output
数据范围:
题解:板子题,敲板子~
- #include <cstdio>
- #include <cstring>
- #include <iostream>
- #include <cmath>
- #define pi acos(-1.0)
- using namespace std;
- struct cp
- {
- double x,y;
- cp(double x0,double y0)
- {
- x=x0,y=y0;
- }
- cp(){}
- cp operator +(const cp a)const
- {
- return cp(x+a.x,y+a.y);
- }
- cp operator -(const cp a)const
- {
- return cp(x-a.x,y-a.y);
- }
- cp operator *(const cp a)const
- {
- return cp(x*a.x-y*a.y,x*a.y+y*a.x);
- }
- }n1[1<<20],n2[1<<20];
- int n;
- char str[1<<20];
- int ans[1<<20];
- int rd()
- {
- int ret=0,f=1; char gc=getchar();
- while(gc<'0'||gc>'9') {if(gc=='-')f=-f; gc=getchar();}
- while(gc>='0'&&gc<='9') ret=ret*10+gc-'0',gc=getchar();
- return ret*f;
- }
- void init(cp *a,int len)
- {
- int i,j,t=0;
- for(i=0;i<len;i++)
- {
- if(i>t) swap(a[i],a[t]);
- for(j=(len>>1);(t^=j)<j;j>>=1);
- }
- }
- void FFT(cp *a,int len,int f)
- {
- init(a,len);
- int h,i,j,k;
- cp t;
- for(h=2;h<=len;h<<=1)
- {
- cp wn(cos(f*2*pi/h),sin(f*2*pi/h));
- for(j=0;j<len;j+=h)
- {
- cp w(1,0);
- for(k=j;k<j+h/2;k++) t=w*a[k+h/2],a[k+h/2]=a[k]-t,a[k]=a[k]+t,w=w*wn;
- }
- }
- if(f==-1) for(i=0;i<len;i++) a[i].x=a[i].x/len;
- }
- void work(cp *a,cp *b,int len)
- {
- FFT(a,len,1),FFT(b,len,1);
- for(int i=0;i<len;i++) a[i]=a[i]*b[i];
- FFT(a,len,-1);
- for(int i=0;i<len;i++) ans[i]=int(a[i].x+0.1);
- }
- int main()
- {
- n=rd();
- int i,j,t=0,len=1;
- while(len<n*2) len<<=1;
- scanf("%s",str);
- for(i=0;i<n;i++) n1[n-i-1]=cp(str[i]-'0',0);
- scanf("%s",str);
- for(i=0;i<n;i++) n2[n-i-1]=cp(str[i]-'0',0);
- for(i=n;i<len;i++) n1[i]=n2[i]=cp(0,0);
- work(n1,n2,len);
- len=2*n-1;
- for(i=0;i<=len;i++) ans[i+1]+=ans[i]/10,ans[i]%=10;
- while(ans[len]<=0&&len) len--;
- for(i=len;i>=0;i--) printf("%d",ans[i]);
- return 0;
- }
【BZOJ2179】FFT快速傅立叶的更多相关文章
- [bzoj2179]FFT快速傅立叶_FFT
FFT快速傅立叶 bzoj-2179 题目大意:给出两个n位10进制整数x和y,你需要计算x*y. 注释:$1\le n\le 6\times 10^4$. 想法: $FFT$入门题. $FFT$实现 ...
- BZOJ2179: FFT快速傅立叶 & caioj1450:【快速傅里叶变换】大整数乘法
[传送门:BZOJ2179&caioj1450] 简要题意: 给出两个超级大的整数,求出a*b 题解: Rose_max出的一道FFT例题,卡掉高精度 = =(没想到BZOJ也有) 只要把a和 ...
- bzoj2179: FFT快速傅立叶
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...
- bzoj千题计划166:bzoj2179: FFT快速傅立叶
http://www.lydsy.com/JudgeOnline/problem.php?id=2179 FFT做高精乘 #include<cmath> #include<cstdi ...
- BZOJ2179:FFT快速傅立叶(FFT)
Description 给出两个n位10进制整数x和y,你需要计算x*y. Input 第一行一个正整数n. 第二行描述一个位数为n的正整数x. 第三行描述一个位数为n的正整数y. Output 输出 ...
- BZOJ2179: FFT快速傅立叶 FFT实现高精度乘法
Code: #include <cstdio> #include <algorithm> #include <cmath> #include <cstring ...
- 【bzoj2179】FFT快速傅立叶 FFT模板
2016-06-01 09:34:54 很久很久很久以前写的了... 今天又比较了一下效率,貌似手写复数要快很多. 贴一下模板: #include<iostream> #include& ...
- BZOJ 2179: FFT快速傅立叶
2179: FFT快速傅立叶 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 2923 Solved: 1498[Submit][Status][Di ...
- 【BZOJ 2179】 2179: FFT快速傅立叶 (FFT)
2179: FFT快速傅立叶 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 3308 Solved: 1720 Description 给出两个n位 ...
随机推荐
- 解决在IE9,IE10浏览器下,程序没有任何错误,easy ui页面不加载任何数据的问题
对于web应用程序,经常用到开发人员工具,按F12,可以调试脚本,可以查看监视网络,查看各页面加载时间,非常方便,今天在调试js时,不小心打开了兼容性视图, 之后每次打打开页面时,均不显示页面post ...
- css中属性值继承小解
继承:html元素可以从父元素那里继承一部分css属性,即使当前元素没有定义该属性. 1.css可以和不可以继承的属性 不可继承的:display.margin.border.padding.back ...
- 算法----堆排序(heap sort)
堆排序是利用堆进行排序的高效算法,其能实现O(NlogN)的排序时间复杂度,详细算法分析能够点击堆排序算法时间复杂度分析. 算法实现: 调整堆: void sort::sink(int* a, con ...
- php 获取客户端的浏览器信息
就是访问的时候,通过服务端来判断用户是否为移动端,如果是的话就重定向(移动端的页面).事实上现在都是一套搞定的了. 但是还是记录一下吧.没准以后用的到 http://detectmobilebr ...
- mysql-multi source replication 配置
1.关键步骤 change master to master_host='172.16.192.201', master_port, master_user='repl', master_passwo ...
- 定时检测Memcached进程是否存在,若不存在自动启动它
由于一台WEB服务器的Memcached死掉而导致在访问网站的某些页面时候打不开.下面脚本会自动检测Memcached的进程,如果挂掉则自动重启Memcached服务. vim memcached_c ...
- GNU Linux高并发性能优化方案
/*********************************************************** * Author : Samson * Date : 07/14/2015 * ...
- SQL server账号无法登陆
- 基于Verilog语言的FIR滤波【程序和理解】
一直想找一个简单.清晰.明了的fir滤波器的设计,终于找到了一个可以应用的,和大家分享一下,有助于FPGA新手入门. 1.说道fir滤波器,滤波系数肯定是最重要的,因为后面程序中涉及到滤波系数问题,所 ...
- [gj]耶稣和撒旦的关系
转: https://zhidao.baidu.com/question/7461904.html 人生充满试探,无论你居住在乡间或城市,都尝会受到试探,耶稣在世上的日子,也受到试探,让我们看看两处经 ...