高精度算法
首先要知道为什么需要高精度算法:
高精度算法是处理大数字的数学计算方法,当数字过大不能用
int和long long存储时,我们就可以使用string和vector类型来存储他们的每一位,然后进行计算。
一、高精度加法
1.1 思路
我们可以先把要输入的两个数字放到vector中存储,注意要反着存(后边做加法的时候最后有进位就可以直接push_back),接下来就是加法:
设置一个add变量表示进位,创建一个res保存每一位,add 加上两个数字,把add % 10放入res中,再把add /= 10。
在最后要注意循环完且add不为0的情况。
1.2 例题:高精度加法
题目描述
给定两个正整数(不含前导 0),计算它们的和。
输入格式
共两行,每行包含一个整数。
输出格式
共一行,包含所求的和。
数据范围
1≤整数长度≤100000
输入样例:
12
23
输出样例:
35
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<int> add(const vector<int>& a, const vector<int>& b)
{
int add = 0;
vector<int> res;
for(int i = 0; i < a.size() || i < b.size() || add; i++)
{
if(i < a.size()) add += a[i];
if(i < b.size()) add += b[i];
res.push_back(add % 10);
add /= 10;
}
return res;
}
int main()
{
string a, b;
cin >> a >> b;
vector<int> A, B;
for(int i = a.size() - 1; i >= 0; i--)
{
A.push_back(a[i] - '0');
}
for(int i = b.size() - 1; i >= 0; i--)
{
B.push_back(b[i] - '0');
}
vector<int> res = add(A, B);

本文详细介绍高精度算法在处理大数字时的应用,包括加法、减法、乘法和除法的具体实现方法,并通过实例讲解每种算法的实现细节。
最低0.47元/天 解锁文章
1万+

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



