大数加减法(面试准备)
来源:互联网 发布:惩罚男朋友的招数知乎 编辑:程序博客网 时间:2024/04/29 01:34
大数加减法,使用string类型来表示数字
//思路:
1):对于两个正数或者是负数相加,则直接相加
2):负数加上正数,则相当于正数减去负数
代码如下:
/**大整数的加减法*/#include <iostream>#include <string>using namespace std;int myminus=0;//0 表示没有负号,1表示有string bignumdel(string str1,string str2);string bignumAdd(string str1,string str2){int len1=str1.length();int len2=str2.length();if(len1==0)return str2;if(len2==0)return str1;if(str1[0]=='-' && str2[0]=='-'){myminus=1;str1.erase(0,1);str2.erase(0,1);return bignumAdd(str1,str2);}else if(str1[0]=='-' && str2[0]!='-'){str1.erase(0,1);return bignumdel(str2,str1);}else if(str1[0]!='-' && str2[0]=='-'){str2.erase(0,1);return bignumdel(str1,str2);}//addint maxlen=len1;string result;if(len1>len2){maxlen=len1;for(int i=0;i<(len1-len2);i++){str2='0'+str2;}}else if(len2>len1){maxlen=len2;for(int i=0;i<(len2-len1);i++){str1='0'+str1;}}int takeover=0;for(int i=maxlen-1;i>=0;i--){int tmp=(str1[i]-'0')+(str2[i]-'0')+takeover;takeover=0;if(tmp>=10){tmp=tmp%10;takeover=1;}char ch=('0'+tmp);result= ch +result;}if(takeover==1)result='1'+result;return result;}string bignumdel(string str1,string str2){int len1=str1.length();int len2=str2.length();if(len1>len2){for(int i=0;i<len1-len2;i++)str2='0'+str2;}else if(len2>len1){for(int i=0;i<len2-len1;i++)str1='0'+str1;myminus=1;return bignumdel(str2,str1);}else if(len1==len2){if(str1<str2){myminus=1;return bignumdel(str2,str1);} }//delint takeover=0;string result;for(int i=len1-1;i>=0;i--){int tmp=(str1[i]-'0')-(str2[i]-'0')-takeover;if(tmp<0){tmp=(str1[i]-'0')-(str2[i]-'0')+10-takeover;takeover=1;}char ch='0'+tmp;result= ch +result;}return result;}int main(){string str1,str2;while(cin>>str1>>str2){string res=bignumAdd(str1,str2);if(myminus==1)printf("-");int len=res.length();int i=0;while((i++)<len)//除0前缀{if(res[0]=='0'){res.erase(0,1);}else break;}cout<<res<<endl;myminus=0;}return 0;}
0 0
- 大数加减法(面试准备)
- 大数加减法(C++实现)
- 大数加减法
- 大数加减法
- 大数加减法
- 大数加减法
- 大数加减法
- java 大数加减法(小数,正负)
- 大数算法之大数加减法
- 大数加减法总结
- 大数加减法-java实现
- 实现大数的加减法
- 存一下大数加减法
- c++大数加减法的实现
- 大数的加减法—C++
- c++之大数 实现加减法
- 大数运算之高精度加减法
- 面试准备(ZZ)
- 全平台的Crash解决方案
- vim设置
- 基于opensips mysql数据库用户管理
- 在Maven+Spring项目中使用Node.js的Gulp进行前端自动化构建
- Ganglia监控HDFS和HBase指标说明
- 大数加减法(面试准备)
- UGUI 全方位了解
- spring-boot研究一:springboot初探,mysql+jdbc的一个示例
- 跳到google paly应用代码
- ThinkPHP一些补充
- Hive 函数大全
- js跨域问题浅析及解决方法优缺点对比
- C#使用Log4Net记录日志
- IOS后台运行机制 与 动作