CODEVS3123 a*b problem plus (FFT)
type xh=record
x,y:double;
end;
arr=array[..] of xh;
var n,m:longint;
s1,s2:ansistring;
a,b,g,w:arr;
ch:char;
operator -(a,b:xh) c:xh;
begin
c.x:=a.x-b.x;
c.y:=a.y-b.y;
end;
operator +(a,b:xh) c:xh;
begin
c.x:=a.x+b.x;
c.y:=a.y+b.y;
end;
operator *(a,b:xh) c:xh;
begin
c.x:=a.x*b.x-a.y*b.y;
c.y:=a.x*b.y+a.y*b.x;
end;
procedure dft(var a:arr;s,t:longint);//a待处理数组 s初始位置 <<t长度
var i,p:longint;
cnt:xh;
begin
if n>>t= then exit;
dft(a,s,t+); dft(a,s+<<t,t+);
for i:= to n>>t>>- do
begin
p:=i<<t<<+s;
cnt:=w[i<<t]*a[p+<<t];
g[i]:=a[p]+cnt;
g[i+n>>t>>]:=a[p]-cnt;
end;
for i:= to n>>t- do a[s+i<<t]:=g[i];
end;
procedure clr(var a:arr);
begin
fillchar(a,sizeof(a),);
end;
procedure FFT;
var i,len:longint;
lx:longint;
begin
n:=;
while n<m<< do n:=n<<;
for i:= to n- do w[i].x:=cos(pi**i/n);
for i:= to n- do w[i].y:=sin(pi**i/n);
dft(a,,); dft(b,,);
for i:= to n- do a[i]:=a[i]*b[i];
for i:= to n- do w[i].y:=-w[i].y; //!!!!
dft(a,,);
for i:=m<<- downto do a[i].x:=a[i].x/n;//!!!!
for i:= to m<<- do
begin
lx:=round(a[i].x);
a[i+].x:=a[i+].x+lx div ;
a[i].x:=lx mod ;
end;
len:=m<<-;
while a[len].x<1e-12 do dec(len);
for i:=len downto do write(a[i].x::);
writeln;
end;
procedure main;
var i:longint;
begin
read(ch);
while ord(ch)>= do begin s1:=s1+ch; read(ch); end;
readln(s2);
clr(a); clr(b);
for i:=length(s1) downto do a[length(s1)-i].x:=ord(s1[i])-;
for i:=length(s2) downto do b[length(s2)-i].x:=ord(s2[i])-;
if length(s1)>length(s2) then m:=length(s1) else m:=length(s2);
FFT;
end;
begin
main;
end.
CODEVS3123 a*b problem plus (FFT)的更多相关文章
- hdu 1402 A * B Problem Plus FFT
/* hdu 1402 A * B Problem Plus FFT 这是我的第二道FFT的题 第一题是完全照着别人的代码敲出来的,也不明白是什么意思 这个代码是在前一题的基础上改的 做完这个题,我才 ...
- 【CF954I】Yet Another String Matching Problem(FFT)
[CF954I]Yet Another String Matching Problem(FFT) 题面 给定两个字符串\(S,T\) 求\(S\)所有长度为\(|T|\)的子串与\(T\)的距离 两个 ...
- A * B Problem Plus(fft)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1402 hdu_1402:A * B Problem Plus Time Limit: 2000/100 ...
- HDU 1402 A * B Problem Plus (FFT求高精度乘法)
A * B Problem Plus Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- HDU1402 A * B Problem Plus FFT
分析:网上别家的代码都分析的很好,我只是给我自己贴个代码,我是kuangbin的搬运工 一点想法:其实FFT就是快速求卷积罢了,当小数据的时候我们完全可以用母函数来做,比如那种硬币问题 FFT只是用来 ...
- HDU-1402 A * B Problem Plus FFT(快速傅立叶变化)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1402 一般的的大数乘法都是直接模拟乘法演算过程,复杂度O(n^2),对于这题来说会超时.乘法的过程基本 ...
- HDU 1402 A * B Problem Plus (FFT模板题)
FFT模板题,求A*B. 用次FFT模板需要注意的是,N应为2的幂次,不然二进制平摊反转置换会出现死循环. 取出结果值时注意精度,要加上eps才能A. #include <cstdio> ...
- HDU - 1402 A * B Problem Plus FFT裸题
http://acm.hdu.edu.cn/showproblem.php?pid=1402 题意: 求$a*b$ 但是$a$和$b$的范围可以达到 $1e50000$ 题解: 显然...用字符串模拟 ...
- 洛谷.1919.[模板]A*B Problem升级版(FFT)
题目链接:洛谷.BZOJ2179 //将乘数拆成 a0*10^n + a1*10^(n-1) + ... + a_n-1的形式 //可以发现多项式乘法就模拟了竖式乘法 所以用FFT即可 注意处理进位 ...
随机推荐
- python中关闭文件
1.关闭文件,通过f.write把内容写入文件会覆盖之前文件中的内容
- (巨坑)改了tpl文件之后,前端效果没反应
通常前端修改很小的部分代码,并不会立即显示出效果.比如,原来是 ,修改后是 虽然只是加多了一个函数,但是作用很大,这种情况下,可能是由于浏览器缓存的原因,修改后的代码没有被重新加载.这个时候,只需要在 ...
- 读流testDemo
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.I ...
- matlab report generator
Programmatic report creation Create report content Mlreportgen.dom.Document.append Mlreportgen.dom.P ...
- [转]C#设置WinForm快捷键
1.Alt+*(按钮快捷键)按钮快捷键也为最常用快捷键,其设置也故为简单.在大家给button.label.menuStrip等其他控件的Text属性指定名称时,在其后面加上‘&’然后在加上一 ...
- svn 备份后双机同步热备失效,提示 W200007 target server does not support atomic revision property edits svynsync:E170009
svn 备份后双机同步热备失效,提示 W200007 target server does not support atomic revision property edits; consider u ...
- 表单form的属性,单行文本框、密码框、单选多选按钮
基础表单结构: <body> <h1> <hr /> <form action="" name="myFrom" en ...
- 把Angular中的$http变成jQuery.ajax()一样,可以让后台(php)轻松接收到参数
最近接到一个手机项目,我决定用ionic + php + mysql来实现.ionic是一个前端框架,主要用于手机端,它融合了html5.css3.angularJS于一体,用起来很顺手. 开始构建项 ...
- 优化MYSQL数据库的方法
1.选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOT NULL,例如'省份,性别',最好设置为ENUM2.使用连接(JOIN)来代替子查询: a.删除没有任何订单客户:DELETE ...
- 基于SOCK4网络协议的代理服务器端代码示例
//********************************************************************** #include <stdio.h> #i ...