大数加法乘法
2017-09-09 00:01
211 查看
字符串是一个简单、有效的表示大数的方法
用一个char型字符表示十进制数字的一位
模拟手工加法:
模拟手工乘法:
用一个char型字符表示十进制数字的一位
模拟手工加法:
/*大数加法*/ const int N = 1e5 + 10;//100010 string str1,str2; int res ;//保存结果 void BigIntAdd(string str1,string str2) { int len1 = str1.size(); int len2 = str2.size(); int Takeover = 0;//进位标志 len1--;len2--; int k = 0; int tmp;//临时计算值 while(len1 >= 0 && len2 >= 0) { tmp = str1[len1] - '0' + str2[len2] - '0' + Takeover; if(tmp >= 10) { Takeover = 1; tmp %= 10;//tmp -= 10 } else { Takeover = 0; } res[k++] = tmp; len1--; len2--; } while(len1 >= 0) { tmp = str1[len1] - '0' + Takeover; if(tmp >= 10) { Takeover = 1; tmp %= 10; } else { Takeover = 0; } res[k++] = tmp; len1--; } while(len2 >= 0) { tmp = str2[len2] - '0' + Takeover; if(tmp >= 10) { Takeover = 1; tmp %= 10; } else { Takeover = 0; } res[k++] = tmp; len2--; } //检测进位标志 if(Takeover > 0) { res[k] = Takeover; } //打印 int len = str1.size() + str2.size(); len--; while(len && res[len] == 0)//去掉输出结果前面的0 { len--; } while(len >= 0) { cout<<res[len]; len--; } cout<<endl; } void main() { str1 = "99"; str2 = "1"; BigIntAdd(str1,str2); }
模拟手工乘法:
/*大数乘法*/ const int N = 1e5 + 10;//100010 string str1,str2; int a ,b ,res ;//保存结果 void BigIntMul(int *a,int *b,int la,int lb) { int i,j; //逐位相乘 for(int i = 0;i < la;i++) { for(int j = 0;j < lb;j++) { int k = i+j; res[k] += a[i] * b[j]; while(res[k] > 9) { res[k+1] += res[k] / 10; res[k] %= 10; k++; } } } int len = la + lb; len--; while(len && res[len] == 0) len--; //逆序打印结果 while(len >= 0) { cout<<res[len]; len--; } cout<<endl; } void main() { cout<<N<<endl; str1 = "200"; str2 = "3"; int la = str1.size(),lb = str2.size(); //将字符串元素(从后往前)放入整形数组 for(int i=0;i<la;i++) { a[i] = (int)(str1[la-i-1] - '0'); } for(int i=0;i<lb;i++) { b[i] = (int)(str2[lb-i-1]-'0'); } BigIntMul(a,b,la,lb); }
相关文章推荐
- nefu 120 Lucas-Lehmer 梅森素数判别法 二分-大数乘法换加法
- 大数运算(大数加法and大数乘法)
- 大数加法乘法
- nefu 120 Lucas-Lehmer 梅森素数判别法 二分-大数乘法换加法
- 剑指offer编程题Java实现——面试题12相关题大数的加法、减法、乘法问题的实现
- 大数加法和大数乘法
- 大数加法 减法 乘法 除法 高精度四则运算
- 蓝桥杯——算法提高 大数加法&大数乘法&冒泡排序
- 大数运算之加法乘法---JAVA实现
- 大数加法、大数乘法、大数减法。Swift。
- 大数加法、减法、乘法
- 大数加法与乘法
- 大数加法、减法和乘法
- 大数与小数模板(乘法,加法)
- 大数加法以及大数乘法
- Java工作利器之常用工具类(二)——数字工具类-大数乘法、加法、减法运算
- 【模版】大数乘法、加法模版
- Java大数模板——加法、减法、乘法、除法、开方、求余
- 大数加法、乘法
- 高精度 大数加法 乘法 除法 模板