标签:超大数相加
解决超大数相加的问题的一种思路是把整形转化成字符串,废话不多说直接上代码,已经调试通过。
#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