Problem1600--【高精度】高精度减法(例题)

1600: 【高精度】高精度减法(例题)

Time Limit: 1.000 Sec  Memory Limit: 128 MB
Submit: 431  Solved: 162
[Submit] [Status] [Web Board] [Creator:]

Description

    【例2】高精度减法。输入两个正整数,求它们的差。

Input

    两行,每行为一个高精度整数,长度不超过255。

Output

    相减的结果。

Sample Input

12345
45678

Sample Output

-33333

HINT

#include<bits/stdc++.h>
usingnamespacestd;
inta[10001],b[10001],c[10001],pd=0;
intmain(){
    string s1,s2;
    cin>>s1>>s2;
    if((s1<s2&&s1.size()==s2.size())||s1.size()<s2.size()){
        swap(s1,s2);
        pd=1;
    }
    for(inti=0;i<s1.size();i++){
        a[s1.size()-i]=s1[i]-'0';
    }
    for(inti=0;i<s2.size();i++){
        b[s2.size()-i]=s2[i]-'0';  
    }
    intlen=max(s1.size(),s2.size());
    for(inti=1;i<=len;i++){
        if(a[i]<b[i]){
            a[i+1]--;
            a[i]+=10;
        }
        c[i]=a[i]-b[i];
    }
    while(c[len]==0&&len>=1){
        len--;
    }
    if(pd==1){
        cout<<"-";
    }
    for(inti=len;i>=1;i--){
        cout<<c[i];
    }
    if(len<1){
        cout<<"0"<<endl;
    }
}

Source/Category


[Submit] [Status]