6 A-B

已知两个数A和B,求A-B的运算结果。
输入格式:

输入包括两个正整数A和B 。(0<A,B≤1e10086)
输出格式:

输出A-B的运算结果。
输入样例1:

3
2

输出样例1:

在这里给出相应的输出。例如:

1

输入样例2:

11102356985410
2356985410235698

输出样例2:

在这里给出相应的输出。例如:

-2345883053250288

#include<bits/stdc++.h>
using namespace std;
struct bign{
	int d[1000];
	int len;
	bign(){
		memset(d,0,sizeof(d));
		len=0; 
	} 
};
bign change(string s){
	bign a;
	a.len=s.length();
	for(int i=0;i<a.len;i++){
		a.d[i]=s[a.len-i-1]-'0';
	}
	return a;
}
int comp(bign a,bign b){
	if(a.len>b.len)	return 1;
	else if(a.len<b.len)	return -1;
	else{
		for(int i=a.len-1;i>=0;i--){
			if(a.d[i]>b.d[i])	return 1;
			else if(a.d[i]<b.d[i])	return -1;
		}
		return 0;
	}
}
bign sub(bign a,bign b){
	bign c;
	for(int i=0;i<a.len||i<b.len;i++){
		if(a.d[i]<b.d[i]){
			a.d[i+1]--;
			a.d[i]+=10;
		}
		c.d[c.len++]=a.d[i]-b.d[i];
	}
	while(c.len>=2&&c.d[c.len-1]==0){
		c.len--;
	}
	return c;
}
int main(){
	string t1,t2;
	cin>>t1>>t2;
	bign a=change(t1),b=change(t2);
	bign c;
	if(comp(a,b)==-1){
		cout<<"-";
		c=sub(b,a);
	}else	c=sub(a,b);
	for(int i=c.len-1;i>=0;i--){
		cout<<c.d[i];
	}
	return 0;
}
发布了23 篇原创文章 · 获赞 8 · 访问量 1363

猜你喜欢

转载自blog.csdn.net/qq_45550552/article/details/104719156
A-B