超长正整数的相加
2015-08-21 11:22
453 查看
题目:
设计一个算法实现超长正整数的相加。
输入:两个超长正整数
输出:这两个数相加的结果
例子:
输入:两个整数123456789123456789 123456789123456789
输出:这两个数相加的结果246913578246913578
代码:
设计一个算法实现超长正整数的相加。
输入:两个超长正整数
输出:这两个数相加的结果
例子:
输入:两个整数123456789123456789 123456789123456789
输出:这两个数相加的结果246913578246913578
代码:
#include<iostream> #include<string> using namespace std; int main() { string input1, input2; string output; cin >> input1 >> input2; string longer = input1.size() >=input2.size() ? input1 : input2; string shorter = input1.size() < input2.size() ? input1 : input2; int longer_size = longer.size(); int shorter_size = shorter.size(); int zero_num = longer_size - shorter_size; string zero(zero_num, '0'); shorter = zero + shorter; int *p = new int[longer_size + 1]; int flag = 0; for (int i = longer_size - 1; i >= 0; i--) { *(p + i) = (longer[i]-0x30 + shorter[i]-0x30+flag)%10; if ((longer[i] - 0x30 + shorter[i] - 0x30 + flag) / 10 == 1) { flag = 1; } else { flag = 0; } } for (int i = 0; i < longer_size ;i++) { cout << *(p + i); } return 0; }这题的关键在于需要考虑两个整数不一样长的情况,在这里我把较短的哪一个整数在前面填零补充成和较长整数一样的位数。
相关文章推荐
- 找工作的一点建议:
- Linux启动过程详解(inittab、rc.sysinit、rcX.d、rc.local)
- C++编译、链接涉及到的一些基本问题
- struts2 java.io.FileNotFoundException: http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd
- msvcprt.lib(MSVCP90.dll) : error LNK2005:已经在libcpmtd.lib(xmutex.obj) 中定义
- VirtualBox 四种网络连接方式
- 后台程序去download一个网站的前台代码
- 安全密码(2013中南大学研究生复试上机题)
- 九度oj 1106
- java byte[] 与int float long 等的互相转换
- socket 传文件
- Circular Queue--循环队列
- STL vector的使用(二)排序
- windows系统下git配置用户名和邮箱
- Android 使用SharedPreferences数据存储
- WEB测试总结
- python的二进制文件读写
- Importing/Indexing database (MySQL or SQL Server) in Solr using Data Import Handler--转载
- 线程练习题上
- hdu 5400 Arithmetic Sequence