大数运算之加法和乘法算法C++模板

原创 2017年06月22日 15:08:14

大数加法:

void caladd(char *a,char *b,char *res)
{
    int lena=strlen(a);
    int lenb=strlen(b);
    int i=lena-1,j=lenb-1,k=0;
    while( (i+1) || (j+1) )
    {
        if(i!=-1) res[k] += (a[i--]-'0');
        if(j!=-1) res[k] += (b[j--]-'0');
        res[k+1] += res[k]/10;
        res[k++] %= 10;
    }
    while(!res[k]&&k>1)k--;
    if(res[k])k++;
    res[k]=0;
    for(int s=k-1; s>=0; s--)
        res[s]+='0';
    for(int s=0; s<=(k-1)/2; s++)
        swap(res[s],res[k-1-s]);
}

大数乘法:

void calmutiply(char *a, char *b , char *res)
{
    int lena=strlen(a);
    int lenb=strlen(b);
    int k=0;
    for(int i=0;i<lena; i++)
        for(int j=0; j<lenb; j++)
        {
            res[i+j]+=(int)((a[lena-1-i]-'0')*(b[lenb-1-j]-'0'));
            if(res[i+j]>9)
            {
                res[i+j+1]+=res[i+j]/10;
                res[i+j]%=10;
                if(i+j+1>k)k=i+j+1;
            }
            else if(res[i+j]&&i+j>k)k=i+j;
        }
    for(int s=k; s>=0; s--)
        res[s]+='0';
    for(int s=0;s<=k/2;s++)
        swap(res[s],res[k-s]);
}

推荐大数运算用Java(当然Python也行), C++的确实难写, 并且局限性很高. 位数大了要计算很久.

版权声明:本文为博主原创文章,喜欢就点个赞吧 举报

相关文章推荐

C/C++大数运算 string版实现大数乘法 大数加法 大数除法

C/C++大数运算 string版实现大数乘法 大数加法 大数除法 string operator+(string s1,string s2) //大数加法 { if(s1.len...

大数运算——加法,减法,乘法 .

尝试实现了下大数运算的代码。 原理就是用int型数组模拟一个大数的每个位。 数组的[0]对应的大数的个位。     具体代码如下,主要考虑大于10的元素要进位,负数要借位。   ...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

大数运算——加法,减法,乘法

尝试实现了下大数运算的代码。 原理就是用int型数组模拟一个大数的每个位。 数组的[0]对应的大数的个位。     具体代码如下,主要考虑大于10的元素要进位,负数要借位。   ...

大数运算——加法,减法,乘法

尝试实现了下大数运算的代码。原理就是用int型数组模拟一个大数的每个位。数组的[0]对应的大数的个位。  具体代码如下,主要考虑大于10的元素要进位,负数要借位。 #include #includ...

高精度 大数加法 乘法 除法 幂 模板

高精度 大数加法 乘法 除法 幂 模板

整数大数模拟 高精度加法 高精度减法 高精度乘法 高精度除法 c/c++ java

整数大数模拟 高精度加法 高精度减法 高精度乘法 高精度除法 c/c++ java 大数加法 大数减法 大数除法 大数乘法

大数运算,队列实现大数 加法、乘法、除法、模除

大数运算(包括负数),队列实现大数加法,大数减法,大数乘法,大数除法,大数模除,大数比较大小
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)