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

时间:2021-6-4 作者:qvyue

高精度加法:

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

高精度乘法:

void chengfa(char *a,int lena,char *b,int lenb,char *res)
{
    int k=0;
    for(int i=0;i9)
            {
                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

高精度减法:

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]=1)k--;
    for(int s=k; s>=0; s--)
        res[s]=ans[s]+'0';
    for(int s=0; s
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。