- 大数加法
就是很长的一串数字 加上另外一串很长的数字
大数加法的核心在超出了基本运算的范围,需要采用其他方法来解决加法问题;
思路:输入——倒序相加——判断是否进位——输出解决前导零问题
1.1 字符串A、B长度相等
string Add(string A, string B) {string C;int i = A.size() - 1;int Bas = 0, Adv = 0;while (i >= 0) {Bas = (A[i] - '0') + (B[i] - '0'); //当前位所得值C += (Adv + Bas) % 10 + '0'; //当前位终值Adv = (Adv + Bas) / 10; //进位值--i;}if (Adv) C += (Adv + '0'); //若最后仍有进位值reverse(C.begin(), C.end()); //逆转得到两数和return C;}
1.2 字符串A、B长度不等
这里的处理方法就是找出较长的那个字符串,以此为基准进行操作
12345678765+00000012345
string Add(string s, string t) {if(s.size() < t.size()){string temp = s;s = t;t = temp;}//找到较长的字符串int len1 = s.size();int len2 = t.size();int num1,num2,flag = 0,sum;while(len1 > 0)//以此为基准{num1 = s[len1-1]-'0';if(len2 > 0)num2 = t[len2-1]-'0';elsenum2 = 0;//正好补位sum = num1 + num2 + flag;s[len1-1] = sum % 10 + '0';flag = sum / 10;//是否进位len1--;len2--;}if(flag == 1)//若最后仍有进位值s = "1" + s;return s;}
- 回文数的判断
[bool isPalindromic(string C) {int Len = C.size(), i;bool flag = true;for (i = 0; i < Len / 2; i++) if (C[i] != C[Len - 1 - i]) flag = false;return flag;}
](https://blog.csdn.net/m0_50829573/article/details/121925175)
