1169:長整数の減算
時間制限:1000 msメモリ制限:65536 KB
コミット:13400パス:7669
【タイトル説明】
2つの大きな正の整数の差を求めます。
【入力】
2行あります。1行目は減算数a、2行目は減算数bです(a> b)。各長整数は200桁を超えず、余分な先行ゼロはありません。
【出力】
1行は必要な違いです。
【入力例】
9999999999999999999999999999999999999 9999999999999
【出力例】
9999999999999999999999990000000000000
#include<bits/stdc++.h>
using namespace std;
int a[2005],b[2005],c[2005],la,lb,lc=0,x=0;
string a1,b1,tmp;
int main(){
freopen("test.in","r",stdin);
freopen("test.out","w",stdout);
getline(cin, a1);
getline(cin, b1);
if(a1==b1) {
cout<<0<<endl; // 如果两个数相等,输出0
return 0;
}
la=a1.size();
lb=b1.size();
// 判断是否后面的数比前面的数要大,如果大,输出负号并且换位置
if(la<lb||(la==lb&&a1<b1)){
cout<<"-";
//使得a1,b1交换
swap(a1,b1);
}
for(int i=0;i<la;i++){
a[la-i-1]=a1[i]-'0';
}
for(int i=0;i<lb;i++){
b[lb-i-1]=b1[i]-'0';
// cout<<b[la-i-1];
}
// for(int i=0;i<lb;i++){
// cout<<b[i];
// }
// cout<<endl;
while(lc<max(la,lb)){
if(a[lc]<b[lc]){
a[lc]+=10;
a[lc+1]--;
}
c[lc]=a[lc]-b[lc];
lc++;
}
while(c[lc]==0){
lc--;
}
for(int i=lc;i>=0;i--){
cout<<c[i]; // 倒序输出,并且输出到0的位置
}
return 0;
}