1 /*
2 高精度减法
3 洛谷极端数据 最大位数开到100000
4 若被减数小于减数 输出负号后交换减数与被减数
5 结构体初始化
6 定义去除前导0函数
7 重载赋值符号 减号 小于号(用于比较大小)
8 定义字符串输出函数
9 重载输入输出流
10 */
11 #include<bits/stdc++.h>
12 using namespace std;
13 const int maxn=100000;
14 struct bign{
15 int d[maxn],len;
16 inline bign(){len=1;memset(d,0,sizeof(d));}
17 inline void clean() {while(len>1&&!d[len-1]) len--;}
18 inline bign operator = (const char* num)
19 {
20 memset(d,0,sizeof(d));
21 len=strlen(num);
22 for(int i=0;i<len;i++) d[i]=num[len-i-1]-48;
23 return *this;
24 }
25 inline bign operator - (const bign &b)
26 {
27 bign c=*this;
28 for(int i=0;i<c.len;i++)
29 {
30 c.d[i]-=b.d[i];
31 if(c.d[i]<0) {c.d[i]+=10;c.d[i+1]--;};
32 }
33 c.clean();
34 return c;
35 }
36 inline bool operator < (const bign &b) const
37 {
38 if(len!=b.len) return len<b.len;
39 for(int i=0;i<len;i++) if(d[i]!=b.d[i]) return d[i]<b.d[i];
40 return false;
41 }
42 inline string str() const
43 {
44 char s[maxn]={};
45 for(int i=0;i<len;i++) s[len-i-1]=d[i]+48;
46 return s;
47 }
48 }a,b;
49 inline istream& operator >> (istream &in,bign &x)
50 {
51 char s[maxn]={};
52 in>>s;
53 x=s;
54 return in;
55 }
56 inline ostream& operator << (ostream &out,const bign &x)
57 {
58 out<<x.str();
59 return out;
60 }
61 int main()
62 {
63 cin>>a>>b;
64 if(a<b) {swap(a,b);cout<<"-";}
65 cout<<a-b;
66 return 0;
67 }