新手讲大数大数系列---加法
2016-10-07 10:07
399 查看
1.反转
2.求和
3.反转
比较简单,就是要细心
2.求和
3.反转
比较简单,就是要细心
#include<iostream> using namespace std; void bigNumAdd(char *a,char *b,char *c){ int len_a=strlen(a),len_b=strlen(b),len_c; int len=(len_a>len_b?len_b:len_a),flag=0; int len_m=(len_a>len_b?len_a:len_b); memset(c,'0',1005*sizeof(char)); //初始化 for(int i=0;i<len_a/2;i++){ //反转a,b char t=a[i]; a[i]=a[len_a-1-i]; a[len_a-1-i]=t; } for(int i=0;i<len_b/2;i++){ char t=b[i]; b[i]=b[len_b-1-i]; b[len_b-1-i]=t; } for(int i=0;i<len;i++){ //算长度相同的部分 int num=a[i]-'0'+b[i]-'0'+flag; flag=num/10; c[i]=num%10+'0'; } if(len_a>len_b){ //算长度不同的部分 for(int i=len;i<len_a;i++){ int num=a[i]-'0'+flag; flag=num/10; c[i]=num%10+'0'; } if(flag>0) c[len_a]=flag+'0'; } else if(len_a<len_b){ for(int i=len;i<len_b;i++){ int num=b[i]-'0'+flag; flag=num/10; c[i]=num%10+'0'; } if(flag>0) c[len_b]=flag+'0'; } else if(len_a==len_b) if(flag>0) c[len]=flag+'0'; if(c[len_m]=='0') len_c=len_m; //算结果的长度 else len_c=len_m+1; for(int i=0;i<len_c/2;i++){ //反转结果 char t=c[i]; c[i]=c[len_c-1-i]; c[len_c-1-i]=t; } for(int i=0;i<len_c;i++) cout<<c[i]; //输出结果 cout<<endl; } int main(){ for(int i=0;i<5;i++){ char a[1005],b[1005],c[1005]; cin>>a>>b; bigNumAdd(a,b,c); //cout<<c<<endl; } return 0; }
相关文章推荐
- 大数系列——大数加法
- 个人C++模板之大数系列(加法)
- 高精度处理大数加法C语言实现
- 51nod 1005 大数加法
- 深入理解JavaScript系列(23):JavaScript与DOM(上)——也适用于新手
- 给Linux新手[系列之四]
- 【性能测试思想】性能测试新手误区系列汇总
- 大数加法的实现
- 大数加法简易理解并实现
- 黑客新手工具系列集合附链接
- 大数加法
- HDOJ 1002 大数加法
- ACM简单处理大数加法方法
- 1002 Java大数加法
- 51NOD 大数加法以及python写法
- HDU 1297 Children’s Queue【大数加法 + 递推】
- HDOJ1002大数加法
- 【hdoj 1002】大数加法
- Integer Inquiry(大数加法)
- POJ-1503-Integer Inquiry-大数加法