大数减法

#include<iostream>
#include<string>
#include<vector>
using namespace std;
int cmp(vector<int>n,vector<int>m)
{
	if(n.size()>m.size()||n==m){
		return 1;
	}
	else if(n.size()==m.size()){
		for(int i=n.size()-1;i>=0;i--)
		{
			if(n[i]!=m[i])return n[i]>m[i];
		}

	}
	else if(n.size()<m.size())return 0;
}
vector<int> sub(vector<int>&n,vector<int>&m)
{
    vector<int>c;
    int t=0;
    for(int i=0;i<n.size();i++){
		 t=n[i]-t;
		 if(i<m.size())t-=m[i];
		 c.push_back((t+10)%10);//在t<0时和t>0时,都成立
		 if(t<0)t=1;
		 else t=0;
	}
	while(c.size()>1&&c.back()==0)c.pop_back();//除去前导0;
    return c;
}
int main()
{
    string s,d;
	cin>>s>>d;
	vector<int>n,m;
	for(int i=s.size()-1;i>=0;i--)n.push_back(s[i]-'0');
	for(int i=d.size()-1;i>=0;i--)m.push_back(d[i]-'0');
	vector<int>c;
	if(cmp(n,m)){ 
	c=sub(n,m);
	for(int i=c.size()-1;i>=0;i--){
		printf("%d",c[i]);	
	}
	}
	else {
		c=sub(m,n);
		printf("-");
		for(int i=c.size()-1;i>=0;i--)printf("%d",c[i]);
	}
	
} 

全部评论

相关推荐

安静的垂耳兔在泡澡:ks已经第八次投递了,它起码挂了还让你再投,不错了
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务