大数运算之加法和乘法算法C++模板
2017-06-22 15:08
627 查看
大数加法:
大数乘法:
推荐大数运算用Java(当然Python也行), C++的确实难写, 并且局限性很高. 位数大了要计算很久.
void caladd(char *a,char *b,char *res) { int lena=strlen(a); int lenb=strlen(b); int i=lena-1,j=lenb-1,k=0; while( (i+1) || (j+1) ) { if(i!=-1) res[k] += (a[i--]-'0'); if(j!=-1) res[k] += (b[j--]-'0'); res[k+1] += res[k]/10; res[k++] %= 10; } while(!res[k]&&k>1)k--; if(res[k])k++; res[k]=0; for(int s=k-1; s>=0; s--) res[s]+='0'; for(int s=0; s<=(k-1)/2; s++) swap(res[s],res[k-1-s]); }
大数乘法:
void calmutiply(char *a, char *b , char *res) { int lena=strlen(a); int lenb=strlen(b); int k=0; for(int i=0;i<lena; i++) for(int j=0; j<lenb; j++) { res[i+j]+=(int)((a[lena-1-i]-'0')*(b[lenb-1-j]-'0')); if(res[i+j]>9) { res[i+j+1]+=res[i+j]/10; res[i+j]%=10; if(i+j+1>k)k=i+j+1; } else if(res[i+j]&&i+j>k)k=i+j; } for(int s=k; s>=0; s--) res[s]+='0'; for(int s=0;s<=k/2;s++) swap(res[s],res[k-s]); }
推荐大数运算用Java(当然Python也行), C++的确实难写, 并且局限性很高. 位数大了要计算很久.
相关文章推荐
- 高精度 大数加法 乘法 除法 模板
- PAT 一元多项式的乘法与加法运算(链表 c++版)
- C++实现大数运算 加法部分。
- 2018年全国多校算法寒假训练营练习比赛(第三场)---E---题(大数阶乘(模板题)c++/java/py)
- C++大数运算之加法,减法
- 蓝桥杯——算法提高 大数加法&大数乘法&冒泡排序
- Java大数模板——加法、减法、乘法、除法、开方、求余
- 大数运算,队列实现大数 加法、乘法、除法、模除
- C++实现大数乘法算法代码
- [acm 1001] c++ 大数加法 乘法 幂
- 大数与小数模板(乘法,加法)
- Java工作利器之常用工具类(二)——数字工具类-大数乘法、加法、减法运算
- [算法题] 大数乘法运算
- 个人C++模板之大数系列(加法)
- PAT 一元多项式的乘法与加法运算(链表 c++版)
- 整数大数模拟 高精度加法 高精度减法 高精度乘法 高精度除法 c/c++ java
- 大数模板 大数加法,大数减法,大数乘法,大数除法,大数比较等操作
- C++ 02-线性结构2 一元多项式的乘法与加法运算
- C++大数加法乘法
- 多项式的加法和乘法算术运算的C++实现