高精度计算

高精度计算,第1张

高精度计算

3.高精度加法
一般用数组存储一个数
eg:123456789
问题:第0位存1呢,还是存9呢?
回答:第0位存各位比较好。即第0位存9   #便于进位时往数组里添加值
所以数组存储顺序为 9 8 7 6 5 4 3 2 1 


大整数用数组存储
运算:模拟人工计算
 高精度加法模板:

#include
#include
using namespace std;

//C=A+B
vectoradd (vector& a, vector& b)  
//加引用是为了提高效率,如果不加引用的话系统会把这个数组在复制一遍
{
    vectorc;
    int t = 0;
    for (int i = 0; i < a.size() || i < b.size(); i++)
    {
        if (i < a.size()) t += a[i];
        if (i < b.size())  t += b[i];
        c.push_back(t % 10);
        t = t / 10;

    }
    if (t)  //如果还有进位
        c.push_back(1);
    return c;
}

int main()
{
    string a, b;
    cin>>a >> b;
    vectornuma, numb;
    //从后往前遍历每一位
    for (int i = a.size()-1; i >= 0; i--)
    {
        numa.push_back(a[i] - '0');//  -'0'的作用是使char变为数字
    }
    for (int i = b.size()-1; i >= 0; i--)
    {
        numb.push_back(b[i] - '0');//  -'0'的作用是使char变为数字
    }
    auto c = add(numa, numb);
    //倒着输出
    for (int i = c.size()-1; i >= 0; i--)
    {
        cout << c[i];
    }
    return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5703472.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存