题目来源

吐槽下P3803都是紫题...

真心好写,本想一遍过的...但是

我真是太菜了...

 #include<bits/stdc++.h>
using namespace std;
const int MAXN=;
const double pi=acos(-1.0);
char x[MAXN],y[MAXN];
int sum,lena,lenb,l;
int TT[MAXN],c[MAXN];
int r;
int n,m;
struct Node{
//int x;
double x;
double y;
Node (double x1=,double y1=){
x=x1,y=y1;
}
}a[MAXN],b[MAXN];
Node operator * (Node x,Node y){
return Node(x.x*y.x-x.y*y.y,x.x*y.y+x.y*y.x);
}
Node operator + (Node x,Node y){
return Node(x.x+y.x,x.y+y.y);
}
Node operator - (Node x,Node y){
return Node(x.x-y.x,x.y-y.y);
}
inline void fft(Node *g,double tf){
for (int i=;i<sum;++i)
if (i<c[i])
swap(g[i],g[c[i]]);
for (int j=;j<sum;j<<=){
Node T(cos(pi/j),tf*sin(pi/j));
for (int k=;k<sum;k+=(j<<)){
Node T1(,);
for (int l=;l<j;l++,T1=T*T1){
Node x1=g[k+l];
Node y1=T1*g[k+j+l];
g[k+l]=x1+y1;
g[k+j+l]=x1-y1;
}
}
}
}
int main(){
scanf("%d",&n);
scanf("%s%s",x,y);
//printf("%s",x);
for (int i=n-;i>=;i--){
a[lena++].x=x[i]-;
b[lenb++].x=y[i]-;
}
sum=;
while (sum<n+n) sum<<=,l++;
for (int i=;i<=sum;++i)
c[i]=(c[i>>]>>)|((i&)<<(l-));
fft(a,),fft(b,);
for (int i=;i<=sum;++i)
a[i]=a[i]*b[i];
fft(a,-);
for (int i=;i<=sum;++i){
TT[i]+=(int) (a[i].x/sum+0.5);
if (TT[i]>=){
TT[i+]+=TT[i]/;
TT[i]%=;
if (i==sum)
sum++;
}
}
while (!TT[sum] && sum>=)
sum--;
sum++;
while (--sum>=)
printf("%d",TT[sum]);
return ;
}

洛谷 P1919 【模板】A*B Problem升级版(FFT快速傅里叶)的更多相关文章

  1. 洛谷.1919.[模板]A*B Problem升级版(FFT)

    题目链接:洛谷.BZOJ2179 //将乘数拆成 a0*10^n + a1*10^(n-1) + ... + a_n-1的形式 //可以发现多项式乘法就模拟了竖式乘法 所以用FFT即可 注意处理进位 ...

  2. 【洛谷P1919】A*B Problem升级版

    题目大意:rt 题解:将长度为 N 的大整数看作是一个 N-1 次的多项式,利用 FFT 计算多项式的卷积即可. 代码如下 #include <bits/stdc++.h> using n ...

  3. 洛谷P1919 【模板】A*B Problem升级版 题解(FFT的第一次实战)

    洛谷P1919 [模板]A*B Problem升级版(FFT快速傅里叶) 刚学了FFT,我们来刷一道模板题. 题目描述 给定两个长度为 n 的两个十进制数,求它们的乘积. n<=100000 如 ...

  4. 洛谷P3373 [模板]线段树 2(区间增减.乘 区间求和)

    To 洛谷.3373 [模板]线段树2 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.将某区间每一个数乘上x 3.求出某区间每一个数的和 输入输出格式 输入格 ...

  5. 洛谷P1919 【模板】A*B Problem升级版(FFT快速傅里叶)

    题目描述 给出两个n位10进制整数x和y,你需要计算x*y. 输入输出格式 输入格式: 第一行一个正整数n. 第二行描述一个位数为n的正整数x. 第三行描述一个位数为n的正整数y. 输出格式: 输出一 ...

  6. 洛谷P1919 A*B problem 快速傅里叶变换模板 [FFT]

    题目传送门 A*B problem 题目描述 给出两个n位10进制整数x和y,你需要计算x*y. 输入输出格式 输入格式: 第一行一个正整数n. 第二行描述一个位数为n的正整数x. 第三行描述一个位数 ...

  7. 【AC自动机】洛谷三道模板题

    [题目链接] https://www.luogu.org/problem/P3808 [题意] 给定n个模式串和1个文本串,求有多少个模式串在文本串里出现过. [题解] 不再介绍基础知识了,就是裸的模 ...

  8. 洛谷P3375 [模板]KMP字符串匹配

    To 洛谷.3375 KMP字符串匹配 题目描述 如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置. 为了减少骗分的情况,接下来还要输出子串的前缀数组next.如果 ...

  9. LCT总结——概念篇+洛谷P3690[模板]Link Cut Tree(动态树)(LCT,Splay)

    为了优化体验(其实是强迫症),蒟蒻把总结拆成了两篇,方便不同学习阶段的Dalao们切换. LCT总结--应用篇戳这里 概念.性质简述 首先介绍一下链剖分的概念(感谢laofu的讲课) 链剖分,是指一类 ...

  10. 【洛谷p1601】A+B Problem(高精)

    高精度加法的思路还是很简单容易理解的 A+B Problem(高精)[传送门] 洛谷算法标签: 附上代码(最近懒得一批) #include<iostream> #include<cs ...

随机推荐

  1. PostgreSQL 安装了contrib 之后 登录失败的问题

    1. 自己之前只是安装了 pg 10.6 2. 开发同事 需要用到 一个extensions 叫做 uuid-ossp 3. 执行报错  详情见昨天的blog 4. 然后执行了升级操作 结果 pg10 ...

  2. [转帖]How To Be Successful

    How To Be Successful http://blog.samaltman.com/how-to-be-successful 总结一下文章的重点: 1. Compound yourself2 ...

  3. Vue 刷新当前页面,并重新加载页面数据

    业务场景:在管理后台,在执行完,增,删,改,操作的时候.我们需要刷新一下页面,重载数据.在JQ中我们会用到location.reload()方法,刷新页面:在vue中,这里需要用到一个 provide ...

  4. spring 标签

    */ @Slf4j @Service public class RetryService { @Autowired private MqConfig mqConfig; /** * 如果网络连接失败, ...

  5. 集合之ArrayList(含JDK1.8源码分析)

    一.ArrayList的数据结构 ArrayList底层的数据结构就是数组,数组元素类型为Object类型,即可以存放所有类型数据.我们对ArrayList类的实例的所有的操作(增删改查等),其底层都 ...

  6. ERP系统的问题

    1.业务统计报表导出超时 2.库存统计相关接口查询容易导致慢查询,而且慢查询出现在主库上

  7. PHP爬虫框架Beanbun使用

    第一 下载安装Beanbun框架 例如: mkdir -p BeanbunTest composer require kiddyu/beanbun 如图所示: 第二 简单下载网页的例子 <?ph ...

  8. python好文章

    http://blog.csdn.net/csdnnews/article/details/78557392

  9. codeforces157B

    Trace CodeForces - 157B One day, as Sherlock Holmes was tracking down one very important criminal, h ...

  10. AMS工作原理—— App启动概要

    说明: 1. 通过Launcher或者startActivity启动最终的流程都是和上面的一致的. 2. AMP是AMS在App端(client端)的代理, ATP是ApplicationThread ...