【UOJ34】高精度乘法(FFT)
题意:


思路:FFT模板,自带10倍常数
type cp=record
x,y:double;
end;
arr=array[..]of cp;
var a,b,cur:arr;
n,m,n1,n2,i,j:longint;
x:double; function jia(a,b:cp;f:longint):cp;
begin
if f=- then
begin
b.x:=-b.x; b.y:=-b.y;
end;
jia.x:=a.x+b.x;
jia.y:=a.y+b.y;
end; function mult(a,b:cp):cp;
begin
mult.x:=a.x*b.x-a.y*b.y;
mult.y:=a.x*b.y+a.y*b.x;
end; procedure swap(var x,y:cp);
var t:cp;
begin
t:=x; x:=y; y:=t;
end; function max(x,y:longint):longint;
begin
if x>y then exit(x);
exit(y);
end; procedure fft(var a:arr;n,f:longint);
var i,j,k,m:longint;
w,u,v:cp; begin
i:=n>>; j:=;
while j<n do
begin
if i<j then swap(a[i],a[j]);
k:=n>>;
while k and i> do
begin
i:=i xor k;
k:=k>>;
end;
i:=i xor k;
inc(j);
end;
m:=;
while m<=n do
begin
w.x:=cos(*pi*f/m); w.y:=sin(*pi*f/m);
cur[].x:=; cur[].y:=;
for i:= to m- do cur[i]:=mult(cur[i-],w);
i:=;
while i<n do
begin
j:=i;
while j<i+(m>>) do
begin
u:=a[j]; v:=mult(a[j+(m>>)],cur[j-i]);
a[j]:=jia(u,v,);
a[j+(m>>)]:=jia(u,v,-);
inc(j);
end;
i:=i+m;
end;
m:=m<<;
end;
end; begin
assign(input,'uoj34.in'); reset(input);
assign(output,'uoj34.out'); rewrite(output);
readln(n1,n2);
inc(n1); inc(n2);
for i:= to n1- do
begin
read(x); a[i].x:=x;
end;
for i:= to n2- do
begin
read(x); b[i].x:=x;
end;
n:=max(n1,n2);
m:=;
while m<=(n<<) do m:=m<<;
fft(a,m,); fft(b,m,);
for i:= to m do a[i]:=mult(a[i],b[i]);
fft(a,m,-);
for i:= to n1+n2- do write(round(a[i].x/m),' ');
close(input);
close(output);
end.
【UOJ34】高精度乘法(FFT)的更多相关文章
- 高精度乘法(FFT)
学会了FFT之后感觉自己征服了世界! 当然是幻觉... 不过FFT还是很有用的,在优化大规模的动规问题的时候有极大效果. 一般比较凶残的计数动规题都需要FFT(n<=1e9). 下面是高精度乘法 ...
- FFT实现高精度乘法
你应该知道$FFT$是用来处理多项式乘法的吧. 那么高精度乘法和多项式乘法有什么关系呢? 观察这样一个$20$位高精度整数$11111111111111111111$ 我们可以把它处理成这样的形式:$ ...
- P1919 FFT加速高精度乘法
P1919 FFT加速高精度乘法 传送门:https://www.luogu.org/problemnew/show/P1919 题意: 给出两个n位10进制整数x和y,你需要计算x*y. 题解: 对 ...
- [vijos P1040] 高精度乘法
如果这次noip没考好,完全是因为从7月29日之后就没有再写过程序了.说起来,真是一个泪流满面的事实… 那这样一个弱智题练手恢复代码能力,竟然还花了我两个晚上(当然不是两整个晚上…) 第一天TLE了, ...
- 【PKU1001】Exponentiation(高精度乘法)
Exponentiation Time Limit: 500MS Memory Limit: 10000K Total Submissions: 145642 Accepted: 35529 ...
- hdu 1042 N!(高精度乘法 + 缩进)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1042 题目大意:求n!, n 的上限是10000. 解题思路:高精度乘法 , 因为数据量比较大, 所以 ...
- hdu 1042 N!(高精度乘法)
Problem Description Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N! Input One N in ...
- Vijos 1040 高精度乘法
描述 高精度乘法 输入:两行,每行表示一个非负整数(不超过10000位) 输出:两数的乘积. 样例1 样例输入1 99 101 样例输出1 9999 题解 这道题和之前的Vijos 1010 清帝之惑 ...
- 【POJ 1001】Exponentiation (高精度乘法+快速幂)
BUPT2017 wintertraining(15) #6A 题意 求\(R^n\) ( 0.0 < R < 99.999 )(0 < n <= 25) 题解 将R用字符串读 ...
- 【BZOJ5300】[CQOI2018]九连环 (高精度,FFT)
[BZOJ5300][CQOI2018]九连环 (高精度,FFT) 题面 BZOJ 洛谷 题解 去这里看吧,多么好 #include<iostream> #include<cstdi ...
随机推荐
- mysql机制总结
Innodb和myisam最大的不同就是 innodb支持事物 采用了行锁 myisam 采用了表锁 默认就使用了表锁 表锁:速度快 并发小 发生锁冲突高 开销小 行锁:速度慢 并发高 发生锁冲突低 ...
- RandomAccessFile使用场景及总结
大家在学到Java中IO流的时候学到了各种流,对文件的各种操作.但是唯独可能对RandomAccessFile对象不会去过多的研究,那么这个到底有什么用呢? RandomAccessFile的唯一父类 ...
- (快排)51NOD 1018 排序
给出N个整数,对着N个整数进行排序 Input 第1行:整数的数量N(1 <= N <= 50000) 第2 - N + 1行:待排序的整数(-10^9 <= A[i] < ...
- [C陷阱和缺陷] 第3章 语义“陷阱”
第3章 语义"陷阱" 一个句子哪怕其中的每个单词都拼写正确,而且语法也无懈可击,仍然可能有歧义或者并非书写者希望表达的意思.程序也有可能表面上是一个意思,而实际上的意思却相 ...
- SQL数据库,增加查询修改以及防sql写入攻击
SQL添加信息 SQL查询信息 SQL修改信息 SQL语句写入攻击: 普通语句添加信息 sql写入语句攻击: 解决方法:分开传送语句与参数关键:@
- oa系统部署
1.配置java环境变量 新建:JAVA_HOME C:\Program Files\Java\jdk1.6.0_45 path添加 C:\Program Files\Java\jdk1.6.0_ ...
- Memcached通信协议
英文水平很烂,做梦都想着能把英语学习,可以使用一口流利的英文和洋鬼子交流,顺便忽悠下自己的同胞.没有地方学习英语,看还可以,网上有很多关于计算机的英文文献,写还行,说就完全不可能了.在以后的工作中慢慢 ...
- HFS模板开发
痉挛模板, 节, 符号 & 变量帮助需要更多帮助 吗?看看 下面这些链接-模板是模型痉挛用于构建 HTML 页面. -它分为几个部分, 每个部分描述最终 HTML 页面的一部分. -此模板必须 ...
- CAD使用SetxDataLong写数据(网页版)
主要用到函数说明: MxDrawEntity::SetxDataLong 写一个long扩展数据,详细说明如下: 参数 说明 [in] BSTR val 字符串值 szAppName 扩展数据名称 n ...
- 并发和多线程(三)--并发容器J.U.C和lock简介
AQS: 是AbstractQueuedSynchronizer的简称,JUC的核心 底层是sync queue双向链表,还可能有condition queue单向链表,使用Node实现FIFO队列, ...