ʕ·͡ˑ·ཻ ʕ•̫͡• ʔ•̫͡•ཻʕ•̫͡•ʔ•͓͡•ʔ

11:大整数减法

描述

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

输入

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

输出

一行,即所求的差。

样例输入

1
2
9999999999999999999999999999999999999
9999999999999

样例输出

1
9999999999999999999999990000000000000

//会写大整数加法这个题也没问题啦

AC代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include<bits/stdc++.h>
using namespace std;

const int N = 205;

int a[N];
int b[N];
int c[N];

int main(){
string s1,s2;
cin>>s1>>s2;
int len1 = s1.length();
int len2 = s2.length();
while(len2<len1){
s2 = "0" + s2;
++len2;
}
for(int i=0;i<len1;i++){
a[i] = s1[len1-1-i] - '0';
}
for(int i=0;i<len1;i++){
b[i] = s2[len2-1-i] - '0';
}
int len = 0;
while(len<len1){
if(a[len]<b[len]){
a[len+1] -= 1;
c[len] = 10 + a[len] - b[len];
}
else if(a[len]>=b[len]) c[len] = a[len] - b[len];
++len;
}
while(!c[len-1]&&len>1){
--len;
}
for(int i=len-1;i>=0;i--){
cout<<c[i];
}
cout<<endl;
return 0;
}