编程理解——大数相加
来源:互联网 发布:sql 2008 sa 无法登陆 编辑:程序博客网 时间:2024/06/05 10:21
之前听别人说过这道题,昨晚做某家公司的笔试题遇到这个问题,今天面试也遇到这道题了,有时候想这题还真有缘~~~~~~最后彻底搞明白一下。
两个数字的字符串,计算相加之后得到的字符串,当数很大的时候用这种方法计算高效。例如,string a=“453”,string b=“29”,add(a,b)输出“482”。
#include <iostream>#include <string>using namespace std;string add(string a, string b){ string result; int i=a.length()-1; int j=b.length()-1; int c=0; int temp=0; char s; while(i>=0&&j>=0){ temp=a[i]-'0'+b[j]-'0'+c; if(temp<10) {s=temp+'0';c=0;} else{ s=temp%10+'0'; c=temp/10; } result.push_back(s); i--; j--; }while(c>0){ if(i<0&&j<0) {s=c+'0';c=0;} if(i>=0) {temp=a[i]-'0'+c;if(temp<10) {s=temp+'0';c=0;}else{s=temp%10+'0';c=temp/10;}i--;} if(j>=0) {temp=b[j]-'0'+c;if(temp<10) {s=temp+'0';c=0;}else{s=temp%10+'0';c=temp/10;}j--;}result.push_back(s); } while(i>=0) { s=a[i]; result.push_back(s);i--; } while(j>=0) { s=b[j]; result.push_back(s);j--; } for(unsigned int k=0;k<result.length()/2;k++){ s=result[k]; result[k]=result[result.length()-1-k]; result[result.length()-1-k]=s; } return result;}int main(){string a; string b ;while(cin>>a>>b){string r=add(a,b);cout<< r <<endl;}system("pause");}
用以下测试,设置断点,更改程序之后,能正常运行所有用例。
阅读全文
0 0
- 编程理解——大数相加
- 大数相加—位运算
- ACM模板——大数相加
- C++实现——大数相加
- 杭电1002——大数相加
- 高精度加法——大数相加
- 大数处理问题(—)(大数相加)
- 复习C/C++编程之大数相加
- Linux C/C++ 编程练手 --- 大数相加和大数相乘
- C语言精度计算——大数相加
- 栈的应用2——大数相加
- 大数运算(一)——超大整数相加
- 杭电—1047 多个大数相加 Integer Inquiry
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- SqlServer 连接字串不使用数据库名 实现跨库查询
- 有价值的文章收录(好好学习,天天向上)
- Java中带标签的break和continue——如何跳出当前的多重嵌套循环
- 申请腾讯免费个人SSL && 配置 https
- 【51NOD 2026】Gcd and Lcm
- 编程理解——大数相加
- 从零开始成为优秀交互设计师应该怎么做(上)
- 大数据CDH之Impala_10_02
- lombok的使用
- Java程序员入门指南
- leetcode 402. Remove K Digits
- Opencv笔记:利用霍夫变换检测图像中的红球
- 基于R语言的Kaggle案例分析学习笔记(六)
- PHP 错误:Cannot use object of type yii\db\Command as array