大数减法模板

#include <bits/stdc++.h>
using namespace std;
char aa[100005],bb[100005];
int a[100005],b[100005],z[100005];
void kk(char aa[],char bb[],int n,int m)
{
    for(int i=0;i<n;i++)
    {
        a[i]=aa[n-1-i]-'0';
    }
    for(int i=0;i<m;i++)
    {
        b[i]=bb[m-1-i]-'0';
    }
    for(int i=0;i<n;i++)
    {
        z[i]=a[i]-b[i];
    }
    for(int i=0;i<n;i++)
    {
        if(z[i]<0)
        {
            while(z[i]<0)
            {
                z[i+1]=z[i+1]-1;
                z[i]=z[i]+10;
            }
        }
    }
}
int main()
{
    cin>>aa>>bb;
    int n=strlen(aa);
    int m=strlen(bb);
    if(n>m)
    {
        kk(aa,bb,n,m);
    }
    else if(n<m)
    {
        cout<<'-';
        kk(aa,bb,m,n);
    }
    else
    {
        int k=strcmp(aa,bb);
        if(k==0)
        {
            cout<<0<<endl;
        }
        else if(k>0)
        {
            kk(aa,bb,n,m);
        }
        else
        {
            cout<<'-';
            kk(aa,bb,m,n);
        }
    }
    int ll=max(n,m);
    while(z[ll]==0)ll--;
    for(int i=ll;i>=0;i--)
    {
        cout<<z[i];
    }
    cout<<endl;
    return 0;
}

 

 

 

阅读更多
个人分类: 知识点 模板
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭