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

高精度加法:

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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 定点小数运算 来自:http://www.eepw.com.cn/article/17893.htm 在DSP世界...
    郝宇峰阅读 13,209评论 0 2
  • 湖畔三十二:《减法、乘法、加法》 本文是对雕爷上述文章的一次刻意练习,刻意练习的模型在我的文章 【思考】模型1:刻...
    方伟在学习阅读 2,688评论 0 0
  • 【例】高精度乘法。输入两个正整数,求它们的积。【算法分析】类似加法,可以用竖式求乘法。在做乘法运算时,同样也有进位...
    WalkZeRo阅读 5,072评论 0 0
  • 上学那会儿很喜欢水彩画,但是一毕业一工作对于曾经的爱好也很少提笔了,再次拿起手中的笔发现自己已经手生了。希望能跟着...
    芙蓉幼薇阅读 1,586评论 1 2
  • 春天已经基本接近尾声了,四季狂想曲春卷也差不多了。 草长莺飞,花红柳绿,姹紫嫣红,风暖人心,小雨如酥这些自不必再说...
    Epiclove阅读 2,622评论 0 0