大整数减法

题目描述:

求两个大的正整数相减的差。

输入格式:

共2行,第1行是被减数a,第2行是减数b(a > b)。每个大整数不超过200位,不会有多余的前导零。

输出格式:

一行,即所求的差。

样例输入:

9999999999999999999999999999999999999
9999999999999

样例输出:

9999999999999999999999990000000000000
#include <bits/stdc++.h>
using namespace std;
char a[1000],b[1000];
int a1[1000],b1[1000],c[1000];
int main()
{
    cin>>a>>b;
    int lena=strlen(a),lenb=strlen(b);
    for(int i=lena-1;i>=0;i--)
        a1[lena-1-i]=a[i]-'0';
    for(int i=lenb-1;i>=0;i--)
        b1[lenb-1-i]=b[i]-'0';
    int m=max(lena,lenb);
    for(int i=0;i<m;i++)
    {
        if(a1[i]<b1[i])
        { 
            a1[i+1]--;     
            c[i]+=10;    
            c[i]+=a1[i]-b1[i]; 
        }
        else c[i]+=a1[i]-b1[i];
    }
    while(c[m]==0 && m>=1) m--; 
    for(int i=m;i>=0;i--) cout<<abs(c[i]);
    return 0;
}

 

posted @ 2020-02-03 11:37  傅YF  阅读(440)  评论(0)    收藏  举报