题目描述
请设计一个算法完成两个超长正整数的加法。
输入描述:
输入两个字符串数字
输出描述:
输出相加后的结果,string型
#include <iostream> #include <string> #include <vector> using namespace std; int main() { string addend; string augend; string ret; while (cin >> addend >> augend) { int sign = 0;//进位标志 while (1) { //将两个字符串补齐为等长字符串 if (addend.size() < augend.size()) { addend = '0' + addend; } else if (addend.size() > augend.size()) { augend = '0' + augend; } else { break; } } int len = addend.size(); vector<char> ret(len + 1);//保存结果 int sum = 0;//每位求和结果 int result = 0;// for (int i = len - 1; i > -1; i--) { int temp1 = addend[i] - '0';//字符转换位数字 int temp2 = augend[i] - '0'; sum = sign + temp1 + temp2; result = sum % 10; sign = sum / 10; ret[i + 1] = result + '0'; if (i == 0)//考虑最高位有进位 { if (sign == 1) { ret[i] = 1; } else { ret[i] = 0; } } } if (ret[0] == 1) { cout << '1'; } for (int i = 1; i < len + 1; i++) { cout << ret[i]; } cout << endl; } return 0; }