前言
🤞 秋名山码民的主页🤞
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
🙏作者水平很有限,如果发现错误,一定要及时告知作者
高精度算法存在的意义:
在c++中变量的最大范围也不过是64位的大小,可是在实际的数据中难免出现超出范围的,从而由字符串(数组)引申出来了高精度的计算,用字符串来模拟每一位数字,用算术模拟计算高精度加法,高精度乘法
高精度算法的实现
高精度加法
for (int i = 0; i < maxlen; ++i)
{
av = (i < lena) ? a[i] - '0' : 0;
bv = (i < lenb) ? b[i] - '0' : 0;
cap = now / 10;
c[i] = (now % 10) + '0';
}
AI 代码解读
上述代码为模拟整数相加的过程
例题
力扣415俩数相加
class Solution {
public:
string addStrings(string num1, string num2) {
int i = num1.length() - 1, j = num2.length() - 1, add = 0;
string ans = "";
while (i >= 0 || j >= 0 || add != 0) {
int x = i >= 0 ? num1[i] - '0' : 0;
int y = j >= 0 ? num2[j] - '0' : 0;
int result = x + y + add;
ans.push_back('0' + result % 10);
add = result / 10;
i -= 1;
j -= 1;
}
// 计算完以后的答案需要翻转过来
reverse(ans.begin(), ans.end());
return ans;
}
};
AI 代码解读