思路:FFT板子题

//By SiriusRen
#include <cstdio>
#include <complex>
using namespace std;
typedef complex<double> cplxd;
const int N =133333;const double pi=3.1415926535897932;
int n,m,L,R[N],c[N];
char ch[N];
cplxd a[N],b[N];
void fft(cplxd *a,int f){
for(int i=0;i<n;i++)if(i<R[i])swap(a[i],a[R[i]]);
for(int i=1;i<n;i<<=1){
cplxd wn(cos(pi/i),f*sin(pi/i));
for(int j=0;j<n;j+=(i<<1)){
cplxd w(1,0);
for(int k=0;k<i;k++,w*=wn){
cplxd 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(){
scanf("%d",&n),n--;
scanf("%s",ch);
for(int i=0;i<=n;i++)a[i]=ch[n-i]-'0';
scanf("%s",ch);
for(int i=0;i<=n;i++)b[i]=ch[n-i]-'0';
m=2*n;for(n=1;n<=m;n<<=1)L++;
for(int i=0;i<n;i++)R[i]=(R[i>>1]>>1)|((i&1)<<(L-1));
fft(a,1),fft(b,1);
for(int i=0;i<=n;i++)a[i]*=b[i];
fft(a,-1);
for(int i=0;i<=m;i++)c[i]=(int)(a[i].real()+0.1);
for(int i=0;i<=m;i++)if(c[i]>=10){
c[i+1]+=c[i]/10,c[i]%=10;
if(i==m)m++;
}
for(int i=m;i>=0;i--)printf("%d",c[i]);
}

BZOJ 2179 FFT模板的更多相关文章

  1. BZOJ 2179: FFT快速傅立叶

    2179: FFT快速傅立叶 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 2923  Solved: 1498[Submit][Status][Di ...

  2. BZOJ 2179 FFT快速傅立叶 题解

    bzoj 2179 Description 给出两个n位10进制整数x和y,你需要计算x*y. [题目分析] 高精裸题.练手. [代码] 1.手动高精 #include<cstdio> # ...

  3. bzoj 2179: FFT快速傅立叶 -- FFT

    2179: FFT快速傅立叶 Time Limit: 10 Sec  Memory Limit: 259 MB Description 给出两个n位10进制整数x和y,你需要计算x*y. Input ...

  4. bzoj 2179 FFT快速傅立叶 —— FFT

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2179 默写板子,注释的是忘记的地方. 代码如下: #include<iostream& ...

  5. BZOJ 2179 FFT快速傅里叶

    fft. #include<set> #include<map> #include<ctime> #include<queue> #include< ...

  6. 【刷题】BZOJ 2179 FFT快速傅立叶

    Description 给出两个n位10进制整数x和y,你需要计算x*y. Input 第一行一个正整数n. 第二行描述一个位数为n的正整数x. 第三行描述一个位数为n的正整数y. Output 输出 ...

  7. BZOJ 2179 FFT快速傅立叶 ——FFT

    [题目分析] 快速傅里叶变换用于高精度乘法. 其实本质就是循环卷积的计算,也就是多项式的乘法. 两次蝴蝶变换. 二进制取反化递归为迭代. 单位根的巧妙取值,是的复杂度成为了nlogn 范德蒙矩阵计算逆 ...

  8. bzoj 2179 FFT

    求两个高精度的乘法. 根据高位低位,填入多项式的系数,求两个卷积,然后进位操作.

  9. 【BZOJ 2179】 2179: FFT快速傅立叶 (FFT)

    2179: FFT快速傅立叶 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 3308  Solved: 1720 Description 给出两个n位 ...

随机推荐

  1. nyoj--74--小学生算术(水)

    小学生算术 时间限制:3000 ms  |  内存限制:65535 KB 难度:1 描述 很多小学生在学习加法时,发现"进位"特别容易出错.你的任务是计算两个三位数在相加时需要多少 ...

  2. 12. Integer to Roman[M]整数转罗马数字

    题目 Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from ...

  3. 压力测试工具 Tinyget

    Tinyget 压力测试工具使用方法为:命令行切换到工具所在路径下,然后输入压力命令.如:tinyget -srv:localhost -uri:/FeaturedProdu1cts.aspx -th ...

  4. 一个基于Angular+Ionic+Phonegap的混合APP实战

    这个项目做得比较早,当时是基于ionic1和angular1做的.做了四个tabs的app,首页模仿携程首页,第二页主要是phonegap调用手机核心功能,第三页模仿微信和qq聊天页,第四页模仿一般手 ...

  5. .NET XML POST 请求

    //请求体,XML参数 string xmlstring = @"<root></root>“; //请求URL string postUrl ="http ...

  6. JS怎样计算过关分数

    一个游戏,前20关是每一关自身的分数,//21-30关每一关是10分//31-40关,每一关是20分//41-49关,每一关是30分//50关,是100分 <!DOCTYPE html> ...

  7. 初见UDP_Server

    from socket import *ip_prot = ('192.168.55.1',8080)buffer_size = 1024udp_sever = socket(AF_INET,SOCK ...

  8. django patch

    import datetime import pytz from django.apps import AppConfig from django.db.models.fields import Da ...

  9. [置顶] openHAB 体系结构与编程模型 (2) --- Web Application Servlet 源码结构

    || || || || || || demo.items Group All Group gGF (All) Group gFF (All) Group gC (All) Group Outdoor ...

  10. IOS - 网络指示器

    #pragma mark Activity methods - (void)openActivity { // 添加网络指示器 activityIV = [[UIActivityIndicatorVi ...