1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
#include <cstdio> #include <cstring> #include <iostream> #include <string>
using namespace std;
string add(string str1, string str2) { int goBit = 0; // 存放进位
if (str1.length() < str2.length()) { //要求被加数更长或相等 string tmp = str1; str1 = str2; str2 = tmp; }
string tmp (str1.length() - str2.length(), '0');//如果加数比被加数短,就在前面补0 str2 = tmp + str2;
int len1 = str1.length(); for (int i = len1 - 1; i >= 0; --i) { //从后往前模拟普通的加法运算 int tmp = ((str1[i] - '0') + (str2[i] - '0') + goBit) ; str1[i] = tmp%10 + '0'; //取相加后的末位 goBit = tmp/10; //取进位 }
if(goBit != 0){ //最后一次相加还有进位 char ch = '0' + goBit; return ch + str1; } return str1; }
int main() { string str1, str2; cin >> str1 >> str2; cout << add(str1, str2) << endl; return 0; }
|
近期评论