高精度算法用于处理超出标准数据类型(如 int、long long)范围的大整数运算。常见应用包括大数加减乘除、阶乘、大数比较等。其核心思想是将大数以数组或字符串形式存储,每一位单独进行运算,并手动处理进位与借位。
基本思想
本质上就是用程序模拟我们列竖式计算的过程。
存储方式
通常采用小端序(低位在数组前端),例如数字 12345 存储为 [5,4,3,2,1],这样从第 0 位开始进位/借位非常方便。
可以使用 vector<int> 或 string。
数据处理相关代码
高精度字符串转数组
// 将字符串表示的大数转换为小端序 vector(下标0存个位)
vector<int> strToVec(const string& s) {
vector<int> v;
// 从字符串末尾(最低位)开始存储
for (int i = s.size() - 1; i >= 0; i--) {
v.push_back(s[i] - '0');
}
return v;
}
数组转高精度字符串
// 如果需要返回字符串(便于后续使用)
string vecToStr(const vector<int>& v) {
string s;
for (int i = v.size() - 1; i >= 0; i--) {
s.push_back(v[i] + '0');
}
return s;
}