大整数加法
来源:互联网 发布:淘宝妹子爱吃的零食 编辑:程序博客网 时间:2024/06/01 23:27
实现两个大整数相加的方法很简单,就是模拟小学生列竖式做加法,从个位开始逐位相加,超过或达到10则进位,程序中使用变量carry存储1或0。然后逐位相加,相加的结果直接存放在result中。要注意处理进位。
STL代码如下:
#include <iostream>#include <list>using namespace std;int main(){ list<int> l1;//输入1 list<int> l2;//输入2 list<int> result;//结果 int carry = 0;//进位 l1.push_back(2); l1.push_back(4); l1.push_back(3); l2.push_back(4); l2.push_back(6); l2.push_back(5); l2.push_back(1); list<int>::iterator iter1, iter2; iter1 = l1.begin(); iter2 = l2.begin(); //计算加法,使用一个进位carry存储 while(iter1!=l1.end() && iter2!=l2.end()) { int value = *iter1 + *iter2 + carry; carry = value / 10; result.push_back( value % 10); iter1++; iter2++; } //两个输入长度不同时,将超出的部分直接赋值给结果 while(iter1!=l1.end()) { result.push_back(*iter1); iter1++; } while(iter2!=l2.end()) { result.push_back(*iter2); iter2++; } //打印 cout << "输入1:"; for(list<int>::reverse_iterator iter1=l1.rbegin(); iter1 != l1.rend(); ++iter1) { cout << *iter1; } cout << endl << "输入2:"; for(list<int>::reverse_iterator iter2=l2.rbegin(); iter2 != l2.rend(); ++iter2) { cout << *iter2; } cout << endl << "结果:"; list<int>::reverse_iterator iter_res; for(iter_res=result.rbegin(); iter_res != result.rend(); ++iter_res) { cout << *iter_res; } cout << endl; system("pause"); return 0;}
0 0
- 大整数加法
- 大整数加法
- 高精度 大整数加法
- 大整数加法
- 大整数加法
- 大整数加法
- 大整数加法
- 大整数加法计算
- zoj1292大整数加法
- 大整数加法
- 大整数加法
- 大整数加法函数
- 大整数加法
- 大整数加法
- 大整数加法
- 大整数加法
- 大整数加法
- 【算法】大整数加法
- hadoop2.6.4 安装和编译
- 一个经典例子让你彻彻底底理解java回调机制
- ACM 进阶
- 让你的iOS学习渐入佳境
- flann索引类
- 大整数加法
- Hadoop学习路线图
- 抽象类和接口
- HDU2087 剪花布条 [KMP]
- 数据——ArrayList
- 如何理解滚动条
- Java值得注意的知识点
- ArchLinux必备命令记录
- 使用wsimport生成webservices客户端代码