一、高精度算法概述
在C++编程中,int型(-2147483648 ~ 2147483647)和long long型(-9223372036854775808~9223372036854775807)的数值范围有限。当处理超过19位的整数(如30位或200位的数字)时,常规数据类型无法存储,必须采用字符串输入+数组存储的方式处理,这种技术称为高精度算法。
二、高精度加法实现
核心步骤:
-
字符串转数字数组并逆序存储(低位对齐)
-
逐位相加并处理进位
-
去除前导零并输出结果
string A, B;
int a[40] = {0}, b[40] = {0}, sum[40] = {0};
cin >> A >> B; // 输入样例:1234567890314 5890235578899
// 字符串逆序转数字数组
int lenA = A.length();
for (int i = 0; i < lenA; i++) {
a[lenA - i - 1] = A[i] - '0';
}
int lenB = B.length();
for (int i = 0; i < lenB; i++) {
b[lenB - i - 1] = B[i] - '0';
}
// 逐位相加
int c = 0, lenS = 0; // 进位、结果长度
while (lenS < lenA || lenS < lenB) {
sum[lenS] = (a[lenS] + b[lenS] + c) % 10;
c = (a[lenS] + b[lenS] + c) / 10;
lenS++;
}
sum[lenS] = c; // 处理最高位进位
// 输出结果(去除前导零)
if (c =

最低0.47元/天 解锁文章
2005

被折叠的 条评论
为什么被折叠?



