codevs 3123 高精度练习之超大整数乘法
fft。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<complex>
#include<cmath>
#include<algorithm>
#define maxn 300500
#define pi acos(-1)
using namespace std;
typedef complex<double> E;
char s[maxn];
int l1,l2,n=,m,l=,c[maxn],r[maxn];
E a[maxn],b[maxn];
void fft(E *x,int f)
{
for (int i=;i<n;i++)
if (i<r[i]) swap(x[i],x[r[i]]);
for (int i=;i<n;i<<=)
{
E wn(cos(pi/i),f*sin(pi/i));
for (int j=;j<n;j+=(i<<))
{
E w(,);
for (int k=;k<i;k++)
{
E r1,r2;
r1=x[j+k];r2=w*x[i+j+k];
x[j+k]=r1+r2;x[i+j+k]=r1-r2;
w*=wn;
}
}
}
if (f==-)
{
for (int i=;i<n;i++)
x[i]/=n;
}
}
int main()
{
scanf("%s",s);
l1=strlen(s)-;n=max(n,l1);
for (int i=;i<=l1;i++) a[i].real()=s[l1-i]-'';
scanf("%s",s);
l2=strlen(s)-;n=max(n,l2);
for (int i=;i<=l2;i++) b[i].real()=s[l2-i]-'';
m=*n;
for (n=;n<=m;n<<=) l++;
for (int i=;i<n;i++) r[i]=(r[i>>]>>)|((i&)<<(l-));
fft(a,);fft(b,);
for (int i=;i<n;i++) a[i]*=b[i];
fft(a,-);
for (int i=;i<=m;i++)
c[i]=(int)(a[i].real()+0.1);
int flag=;
for (int i=;i<=m;i++)
{
if (c[i]>=)
{
c[i+]+=c[i]/;
c[i]%=;
if (i==m) m++;
}
}
int p=m;while (c[p]==) p--;
for (int i=p;i>=;i--) printf("%d",c[i]);
printf("\n");
return ;
}
codevs 3123 高精度练习之超大整数乘法的更多相关文章
- Code[VS] 3123 高精度练习之超大整数乘法
FFT 做 高精度乘法 #include <bits/stdc++.h> ); struct complex { double a, b; inline complex( , ) { a ...
- 3123 高精度练习之超大整数乘法 - Wikioi
题目描述 Description 给出两个正整数A和B,计算A*B的值.保证A和B的位数不超过100000位. 输入描述 Input Description 读入两个用空格隔开的正整数 输出描述 Ou ...
- 【CodeVS 3123】高精度练习之超大整数乘法 &【BZOJ 2197】FFT快速傅立叶
第一次写法法塔,,,感到威力无穷啊 看了一上午算导就当我看懂了?PS:要是机房里能有个清净的看书环境就好了 FFT主要是用了巧妙的复数单位根,复数单位根在复平面上的对称性使得快速傅立叶变换的时间复杂度 ...
- codevs 3119 高精度练习之大整数开根 (各种高精+压位)
/* codevs 3119 高精度练习之大整数开根 (各种高精+压位) 二分答案 然后高精判重 打了一个多小时..... 最后还超时了...压位就好了 测试点#1.in 结果:AC 内存使用量: 2 ...
- c++ 超大整数除法 高精度除法
c++ 超大整数除法 高精度除法 解题思路 计算a/b,其中a为大整数,b为普通整数,商为c,余数为r. 根据手算除法的规则,上一步的余数记为r,则本次计算的被除数为t=r*10+被除数的本位数值a[ ...
- c++ 超长整数乘法 高精度乘法
c++ 超长整数乘法 高精度乘法 解题思路 参考加法和减法解题思路 乘法不是一位一位的按照手算的方式进行计算,而是用循环用一个数的某一位去乘另外一个数 打卡代码 #include<bits/st ...
- POJ 1001 解题报告 高精度大整数乘法模版
题目是POJ1001 Exponentiation 虽然是小数的幂 最终还是转化为大整数的乘法 这道题要考虑的边界情况比较多 做这道题的时候,我分析了 网上的两个解题报告,发现都有错误,说明OJ对于 ...
- poj2389-Bull Math(大整数乘法)
一,题意: 大整数乘法模板题二,思路: 1,模拟乘法(注意"逢十进一") 2,倒序输出(注意首位0不输出) 三,步骤: 如:555 x 35 = 19425 5 5 5 5 5 ...
- OpenJudge 2980 大整数乘法
链接地址:http://bailian.openjudge.cn/practice/2980/ 题目: 总时间限制: 1000ms 内存限制: 65536kB 描述 求两个不超过200位的非负整数的积 ...
随机推荐
- SVN 安装配置
1,软件下载 到官方网站的下载二进制安装文件,来到二进制包下载部分,找到 Windows NT, 2000, XP and 2003部分,然后选择Apache 2.2 或者 Apache 2.4,这样 ...
- EXT经验--查询items的xtype
前言:EXT由多个组件组成,每个组件可配置多个子组件(items),而每个子组件也可嵌套多个子组件(items)--给人一种子子孙孙无穷匮也的印象,这对于初学者引来一个很重要的问题,特别是阅读他人编写 ...
- Atmel Studio 6.0新建项目
使用Atmel Studio 6.0新建一个项目 连接Atmel 开发板与调试板,开发板使用的芯片是ATXMGEA128A1 注意: 以上对于开发板与调试板的连接,需要非常注意连接时线的方向, ...
- Vim Cscope安装与使用
问题描述: Cscope是VIM适用的工具和插件,通过Cscope可以方便的获取某个函数的定义以及被那些函数调用 问题解决: (1)Cscope安装 注: ...
- Observer Pattern
Motivation We can not talk about Object Oriented Programming without considering the state of the ob ...
- Chp11: Sorting and Searching
Common Sorting Algo: Bubble Sort: Runime: O(n2) average and worst case. Memory: O(1). void BubbleSor ...
- javascript背景淡入淡出
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- java基础知识回顾之java Thread类--java线程实现常见的两种方式实现Runnable接口(二)
创建线程的第二中方式: /** * 步骤: 1定义类实现Runnable接口 2.实现Runnable接口中的run方法. 3.通过Thread类建立线程对象,并将Run ...
- Android ImageButton的背景(图片)大小
使用ImageButton的background属性,而不用src属性. 然后使用width和height进行调整.
- RN学习1——前奏,app插件化和热更新的探索
react_native_banner-min.png React Native(以下简称RN)有大量前端开发者的追捧.前端开发是一个活跃的社区,一直尝试着一统前后端,做一个全栈开发,RN就是他们在客 ...