BZOJ 2179: FFT快速傅立叶
2179: FFT快速傅立叶
Time Limit: 10 Sec Memory Limit: 259 MB
Submit: 2923 Solved: 1498
[Submit][Status][Discuss]
Description
Input
第二行描述一个位数为n的正整数x。
第三行描述一个位数为n的正整数y。
Output
Sample Input
3
4
Sample Output
数据范围:
n<=60000
HINT
Source
FFT模板
#include <bits/stdc++.h> using namespace std; const int maxn = ;
const double pi = acos(-);
typedef complex<double> Complex; int n, m, len;
int ans[maxn];
int rev[maxn];
char str[maxn]; Complex a[maxn];
Complex b[maxn]; inline void calculateFFT(Complex *c, double f)
{
for (int i = ; i < n; ++i)
if (i < rev[i])swap(c[i], c[rev[i]]); for (int i = ; i < n; i <<= )
{
Complex wn(cos(pi/i), f*sin(pi/i)); for (int j = ; j < n; j += (i << ))
{
Complex wk(, ); for (int k = ; k < i; ++k, wk *= wn)
{
Complex x = c[j + k];
Complex y = c[i + j + k] * wk;
c[j + k] = x + y;
c[i + j + k] = x - y;
}
}
}
} signed main(void)
{
scanf("%d", &n); scanf("%s", str); for (int i = ; i < n; ++i)
a[i] = str[n - i - ] - ''; scanf("%s", str); for (int i = ; i < n; ++i)
b[i] = str[n - i - ] - ''; m = n << ;
for (n = ; n < m; )
++len, n <<= ; for (int i = ; i < n; ++i)
{
rev[i] |= rev[i >> ] >> ;
rev[i] |= (i&) << (len - );
} calculateFFT(a, );
calculateFFT(b, ); for (int i = ; i < n; ++i)
a[i] *= b[i]; calculateFFT(a, -); for (int i = ; i < n; ++i)
a[i] /= n; for (int i= ; i < m; ++i)
ans[i] = int(a[i].real() + 0.5); while (!ans[m - ])--m; for (int i = ; i < m; ++i)
if (ans[i] >= )
{
ans[i + ] += ans[i]/;
ans[i] %= ;
} if (!ans[m])--m; for (int i = m; ~i; --i)
putchar('' + ans[i]);
}
@Author: YouSiki
BZOJ 2179: FFT快速傅立叶的更多相关文章
- 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快速傅立叶 题解
bzoj 2179 Description 给出两个n位10进制整数x和y,你需要计算x*y. [题目分析] 高精裸题.练手. [代码] 1.手动高精 #include<cstdio> # ...
- bzoj 2179 FFT快速傅立叶 —— FFT
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2179 默写板子,注释的是忘记的地方. 代码如下: #include<iostream& ...
- BZOJ 2179 FFT快速傅立叶 ——FFT
[题目分析] 快速傅里叶变换用于高精度乘法. 其实本质就是循环卷积的计算,也就是多项式的乘法. 两次蝴蝶变换. 二进制取反化递归为迭代. 单位根的巧妙取值,是的复杂度成为了nlogn 范德蒙矩阵计算逆 ...
- 【刷题】BZOJ 2179 FFT快速傅立叶
Description 给出两个n位10进制整数x和y,你需要计算x*y. Input 第一行一个正整数n. 第二行描述一个位数为n的正整数x. 第三行描述一个位数为n的正整数y. Output 输出 ...
- 【BZOJ 2179】 2179: FFT快速傅立叶 (FFT)
2179: FFT快速傅立叶 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 3308 Solved: 1720 Description 给出两个n位 ...
- 【BZOJ】2179: FFT快速傅立叶(fft)
http://www.lydsy.com/JudgeOnline/problem.php?id=2179 fft裸题.... 为嘛我的那么慢....1000多ms.. #include <cst ...
- 【bzoj2179】FFT快速傅立叶 FFT模板
2016-06-01 09:34:54 很久很久很久以前写的了... 今天又比较了一下效率,貌似手写复数要快很多. 贴一下模板: #include<iostream> #include& ...
- 【BZOJ2179】FFT快速傅立叶
[BZOJ2179]FFT快速傅立叶 Description 给出两个n位10进制整数x和y,你需要计算x*y. Input 第一行一个正整数n. 第二行描述一个位数为n的正整数x. 第三行描述一个位 ...
随机推荐
- python之(re)正则表达式上
python正则表达式知识预备 正则表达式使用反斜杠" \ "来代表特殊形式或用作转义字符,这里跟Python的语法冲突,因此,Python用" \\\\ "表 ...
- Windows操作系统优化(Win7版) - 进阶者系列 - 学习者系列文章
Windows系统优化是个永恒的话题.在操作系统的打包制作方面更是有得一拼.前面提到的龙帝国社区的XP系统就是一个典型的例子,打包好的系统就已经是经过优化的,使用者无需再使用优化工具进行处理.下面就对 ...
- SQLServer中修改字段为空
ALTER 表名 table1 ALTER COLUMN [字段] 类型 NULL; 例如: ) COLLATE Chinese_PRC_CI_AS NULL;
- Tips for Planning Your Business Startup
原文链接:http://domaintree.me/?p=1037 By Robert Thibodeau – Starting a business can be a very daunting ...
- jquery mobile开发中footer一直在底部的设置方法
现给出html中Body节点中的代码如下: 实现代码:data-position=”fixed” <div data-role="page" id="pageone ...
- 更改CentOS7的yum更新源
1. 备份现有源: mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak 2.下载163源 wget h ...
- nginx 日志相关配置总结
设置位于nginx.conf: log_format main '$server_name $remote_addr - $remote_user [$time_local] &q ...
- (转)基于jQuery的form转json示例
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Html文档流和文档对象模型DOM理解
前言 在理解浮动和定位时,触碰到文档流概念.为了更好理解浮动和定位,学习了文档流和DOM(文档对象模型). 正文 DOM(文档对象模型)简单理解就是编写的html页面所有内容构成的树形结构.例如: 根 ...
- 【2016-11-3】【坚持学习】【Day18】【我认识的ORM】
我学过或者用过的ORM有几种 EF NHibernate DevExpress xpo (第一家公司用这个,也是很省力的orm,现在已经不记得了.) 今天晚上想找一下有没有轻量级的orm: flue ...