微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

大数减法



#include<stdio.h>

#include<string.h>

using namespace std;

char a[1000];

char b[1000];

int c[1000];

char temp[1000];

int main()

{

    while(~scanf("%s%s",a,b))

    {

        int flog=0;

        memset(c,sizeof(c));

        int la=strlen(a);

        int lb=strlen(b);

        if(la<lb)

        {

            flog=1;

            strcpy(temp,a);

            strcpy(a,b);

            strcpy(b,temp);

        }

        if(la==lb)

        {

            if(strcmp(a,b)<0)

            {

                flog=1;

                strcpy(temp,a);

                strcpy(a,b);

                strcpy(b,temp);

            }

        }

        la=strlen(a);

        lb=strlen(b);

        int j=0;

        for(int i=0;i<la;i++)

        {

            c[j]+=a[i]-'0';

            j++;

        }

        int x=j;

        j--;

        for(int i=lb-1;i>=0;i--)

        {

            c[j]-=b[i]-'0';

            j--;

        }

        for(int i=x-1;i>=0;i--)

        {

            if(c[i]<0)

            {

                c[i]=10+c[i];

                c[i-1]-=1;

            }

        }

        if(flog==1)

        printf("-");

        int i=0;

        if(x>1)

        {

            for(i=0;i<x;i++)

            {

                if(c[i]!=0)break;

            }

            if(i==x)

            printf("0");

            for(int j=i;j<x;j++)

            {

                printf("%d",c[j]);

            }

            printf("\n");

            continue;

        }

        for(int i=0;i<x;i++)

        {

            printf("%d",c[i]);

        }

        printf("\n");

    }

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐