- 大数加法
就是很长的一串数字 加上另外一串很长的数字
大数加法的核心在超出了基本运算的范围,需要采用其他方法来解决加法问题;
思路:输入——倒序相加——判断是否进位——输出解决前导零问题
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';
else
num2 = 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)