#include
#include <vector>

using namespace std;

bool bmp(vector<int> &A, vector<int> &B){
	if(A.size()!=B.size()) return A.size()>B.size();
	else{
		for(int i=A.size()-1;i>=0;i--){
			if(A[i]!=B[i]){
				return A[i]>B[i];
			}
		}
		return true;
	}
}

vector<int> sub(vector<int> &A, vector<int> &B)
{
	vector<int> C;
	int t = 0;
	for (int i = 0; i < A.size(); i ++ )
	{
		t = A[i] -t;
		if (i < B.size()) t =t - B[i];
		if(t<0){
			C.push_back(t+10);
			t=1;
		}else{
			C.push_back(t);
			t=0;
		}
	}
	while(C.size()>1 && C.back()==0){
		C.pop_back();//删除前导0
	}
	return C;
}

int main()
{
	string a, b;//定义两个字符串
	vector<int> A, B,C;//定义两个可变长度的整数数组A、B
	cin >> a >> b;
	for (int i = a.size() - 1; i >= 0; i -- )//a.size=>23
		A.push_back(a[i] - '0');
	for (int i = b.size() - 1; i >= 0; i -- ) 
		B.push_back(b[i] - '0');
	//要判断A数组里的长整数是否大于B数组里面的长整数
	if(bmp(A, B)){
		C = sub(A,B);
	}else{
		C = sub(B,A);
		printf("-");
	}
	for (int i = C.size() - 1; i >= 0; i -- ) cout << C[i];
	cout << endl;
	return 0;
}

0 条评论

目前还没有评论...