码迷,mamicode.com
首页 > 其他好文 > 详细

两个超大数相加

时间:2015-03-20 00:06:39      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:超大数相加

解决超大数相加的问题的一种思路是把整形转化成字符串,废话不多说直接上代码,已经调试通过。


#include<iostream>
#include<string>
#include<cmath>
using namespace std;

string add(string str1, string str2)
{
	int i;
	string str;

	int len_str1 = str1.length();
	int len_str2 = str2.length();
	int n = abs(len_str1-len_str2);
	//长度对齐
	if(len_str1 < len_str2)
		for(i=0; i<n; i++)
			str1 = "0"+ str1;
	else
		for(i=0; i<n; i++)
            str2 = "0"+ str2;
	len_str1 = str1.length();	//此时两个字符串的长度一样

	int cf=0;	//进位标志位
	int temp;	//存放两个数相加的和
	for(i=len_str1-1; i>=0; i--)
	{
		temp = str1[i]-'0' + str2[i]-'0' + cf;	//把字符串转化为整型
		cf = temp/10;
		temp = temp%10;
		str = char(temp+'0') + str;
	}
	if(cf!=0)
		str = char(cf+'0') + str;
	return str;
}

int main()
{
	string str1, str2;
	cin >> str1;
	cin >> str2;
	cout << add(str1, str2) << endl;
	return 0;
}


两个超大数相加

标签:超大数相加

原文地址:http://blog.csdn.net/xumesang/article/details/44466073

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!