2012年7月20日

超大数乘法---FFT

摘要: 思路: 算法导论第30章有详细说明。此处只是简略说明其主要的步骤。一个知识点是: A(x)=a0+a1x+a2x2+a3x3+……+an-1xn-1A[0](x)=a0+a2x+a4x2+……+an-2xn/2-1A[1](x)=a1+a3x+a5x2+……+an-1xn/2-1A[0](x2)+x*A[1](x2)=A(x)以上是 二进制平摊反转置换跟求和的主要式子。多项式有两种表示形式:点值表示,系数表示。快速FFT主要有以下四点: 1. 使次数界(上界)增加一倍。A(x)、B(x)的长度扩充到2*n 2. 求值。主要是求点值表示A(x)、B(x)的点值表示 3. 点乘。C(x)=A(x) 阅读全文

posted @ 2012-07-20 19:44 L_S_X 阅读(4982) 评论(0) 推荐(0) 编辑

大数阶乘

摘要: 思路: 数组模拟阶乘的过程,处理好进位的问题与优化的问题即可。代码一如下: 1 //大数阶乘 2 #include<iostream> 3 #include<cstring> 4 #define N 17000 //此处只能计算到5000,如有需要,可以修改N 5 using namespace std; 6 void jiecheng(int n); 7 int ans[N]; 8 int main() 9 {10 int n;11 while(cin>>n)12 {13 jiecheng(n);14 }15 return 0;16 }17 18 void 阅读全文

posted @ 2012-07-20 19:27 L_S_X 阅读(623) 评论(0) 推荐(0) 编辑

任意精度的计算

摘要: 思路: 常见的方法有两种 1:用数组模拟,去掉小数点,采用整数的运算,最后处理细节问题。 2:利用各种等式及展开式求取,例如e,π 的值的任意精度。此处代码就略了。 阅读全文

posted @ 2012-07-20 19:07 L_S_X 阅读(638) 评论(0) 推荐(0) 编辑

大数乘法 poj2389

摘要: 思路: 大数乘法:同样是模拟的策略,将中一个拆成一位一位的去乘,再调用大数加法。同样返回的为string。代码如下: 1 #include<iostream> 2 #include<string> 3 using namespace std;//大数加法 4 string add(string a,string b) 5 { 6 int i=a.length()-1,j=b.length()-1; 7 int k=0,flag=0;//flag 进位的标志 8 string ans=""; 9 while(i>=0&&j> 阅读全文

posted @ 2012-07-20 18:49 L_S_X 阅读(1037) 评论(0) 推荐(0) 编辑

大数加法

摘要: 思路: 用字符串模拟加法的原理即可,注意处理细节的问题。为了能够当成模版使用,返回的值处理为字符串。代码如下: 1 //大数加法--模版(string 实现) 2 #include<iostream> 3 #include<string> 4 using namespace std; 5 6 string add(string a,string b) 7 { 8 int i=a.length()-1,j=b.length()-1;//倒序相加 9 int k=0,flag=0;//flag 进位的标志10 string ans="";11 while 阅读全文

posted @ 2012-07-20 16:57 L_S_X 阅读(733) 评论(0) 推荐(0) 编辑

大数问题之目录说明

摘要: 个人总结: 常见的大数问题涉及到以下几类:(正整数) 一、大数加法 地址链接:http://www.cnblogs.com/lsx54321/archive/2012/07/20/2601428.html 二、大数减法 地址链接:http://www.cnblogs.com/lsx54321/archive/2012/07/21/2602304.html三、大数乘法 地址链接:http://www.cnblogs.com/lsx54321/archive/2012/07/20/2601581.html 四、大数除法 地址链接:http://www.cnblogs.com/lsx54321/a. 阅读全文

posted @ 2012-07-20 16:51 L_S_X 阅读(622) 评论(0) 推荐(0) 编辑

导航