美文网首页
高精度(加法&乘法&减法)

高精度(加法&乘法&减法)

作者: fo0Old | 来源:发表于2017-03-21 00:01 被阅读0次

高精度加法:

void jiafa(char *a,int lena,char *b,int lenb,char *res)
{
    int i=lena-1,j=lenb-1,k=0;
    while((i+1)||(j+1))
    {
        if(i!=-1)res[k]+=(int)(a[i--]-'0');
        if(j!=-1)res[k]+=(int)(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 chengfa(char *a,int lena,char *b,int lenb,char *res)
{
    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]);
}

高精度减法:

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

相关文章

  • 高精度(加法&乘法&减法)

    高精度加法: 高精度乘法: 高精度减法:

  • 几个高精度模板

    模板来自洛谷及Acwing:Acwing洛谷 后续增加注释以及相关代码改进 高精度加法 高精度减法 高精度乘法 高...

  • 工厂方法模式

    父类 加法类 减法类 乘法类 除法类 工厂接口 加法工厂 减法工厂 乘法工厂 除法工厂 使用 输出

  • Swift-整数的减法,乘法和除法

    题目:实现整数的减法,乘法和除法,只允许使用加法. 减法 减法是加法的另外一种形式,减法通过取反可以变成加法. ...

  • 17-12-8版子

    高精度加法 高精度乘法 快速乘法 二分匹配 阶乘长度(Stirling公式) 并查集 树状数组 树状数组的逆序数 ...

  • JS 加、减、乘、除运算避免浮点数

    加法运算 减法运算 乘法运算 除法运算

  • noip模板整理

    数论快速幂高精度加法减法乘法除法线性筛素数埃氏筛法 O(nlglgn)最大公约数(gcd)最小公倍数(lcm)扩展...

  • 高精度数(大整数)乘法

    大整数乘法 上一期(高精度加法)今天我们来研讨一下高精度乘法。 题目描述:将两个大整数(最多100位)相乘,输出结...

  • 高精度减法(C++实现)

    高精度减法 简介 用于计算含有超过一般变量存放不下的非负整数 高精度加法这个过程是模拟的小学竖式减法计算 注:在本...

  • 高精度乘法

    【例】高精度乘法。输入两个正整数,求它们的积。【算法分析】类似加法,可以用竖式求乘法。在做乘法运算时,同样也有进位...

网友评论

      本文标题:高精度(加法&乘法&减法)

      本文链接:https://www.haomeiwen.com/subject/dukwnttx.html