大数相加
题目很简单,就是实现两个很大整数的相加操作,具体描述参见 A + B Problem II
直接贴一个我写的代码:
string bigIntegerAdd(string s1, string s2) { int len1 = s1.size(); int len2 = s2.size(); int len = len1 > len2 ? len1+1 : len2+1; string res(len, '0'); int i, j, k; int carry = 0, sum; for (i = len1-1, j = len2-1, k = len-1; i >= 0 || j >= 0; i--, j--, k--) { sum = carry; if (i >= 0) sum += s1[i] - '0'; if (j >= 0) sum += s2[j] - '0'; if (sum >= 10) { res[k] += sum - 10; carry = 1; } else { res[k] += sum; carry = 0; } } if (carry == 1) { res[k] = '1'; return res; } else return res.substr(1); }
reference:
C语言实现高精度大整数的加法
有兴趣的读者可以尝试着实现其他运算,比如相减、相乘、相除。