90分最后的一点RE,求助!
查看原帖
90分最后的一点RE,求助!
400760
ZYH20190341315楼主2021/6/27 16:29
#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
const int N=1e4;
string s1,s2;
int cmp(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])
			continue;
			return a[i]>b[i];
		}
		return -1;
	}
}
void sub(vector<int>&a,vector<int>&b)//大数减法 
{
	int t=0;
	for(int i=0;i<a.size();i++)
	{
		if(i>=b.size())
		b[i]=0;
		a[i+1]--;
		a[i]=10+a[i]-b[i]+t;
		t=a[i]/10;
		a[i]%=10;
	}
	int k0=0;
	for(int i=a.size()-1;i>=0;i--)
	{
		if(a[i]!=0)
		break;
		k0++;
	}
	a.erase(a.end()-k0,a.end());
}
void inp(vector<int>&a)
{
	for(int i=a.size()-1;i>=0;i--)
	printf("%d",a[i]);
}
/*
7546
23
*/
void div()
{
	vector<int>a,b,d,mid;
	for(int i=s1.length()-1;i>=0;i--)
	a.push_back(s1[i]-'0');
	for(int i=s2.length()-1;i>=0;i--)
	b.push_back(s2[i]-'0');
	if(cmp(a,b)==1)
	{
		sub(a,b);
		inp(a);
	}
	else if(cmp(a,b)==0)
	{
		sub(b,a);
		cout<<'-';
		inp(b);
	}
	else
	cout<<0;
}
int main()
{
	cin>>s1>>s2;
	div();
	return 0;
}
2021/6/27 16:29
加载中...