60求助!
查看原帖
60求助!
561043
足球小子楼主2022/10/8 12:35
#include<bits/stdc++.h>
using namespace std;
int a[10090],b[10090],c[10090];
int main(){
	//定义两个字符串,两个整形记位数组,一个差数组 
	string s1,s2;
	cin>>s1>>s2;
	int len1=s1.size(),len2=s2.size(),len=max(len1,len2);//定义长度 
	//特判 
	bool ok=0;//负号 
	if(len1==len2&&s1<s2||len1<len2)//负数 
		swap(s1,s2),ok=1;	
	if(s1==s2&&len1==len2)//s1与s2相等,差为0 
	{
		cout<<0;
		return 0;
	}	
	//字符串转整形数组 
	for(int i=len1-1,j=1;i>=0;i--,j++)
		a[j]=s1[i]-'0';
	for(int i=len2-1,j=1;i>=0;i--,j++)
		b[j]=s2[i]-'0';
	//相减	
	bool f=0;	
	for(int i=1;i<=len;i++)
	{
		if(f&&a[i]==0)
			a[i]=9,f=1;
		else if(f) a[i]--,f=0;
		if(a[i]<b[i])
			f=1,a[i]+=10;	
		c[i]=a[i]-b[i];
	}	
	//负号
	if(ok) 
		cout<<'-';
	//前导零
	for(int i=len;c[i]==0;i--,len--) ;	
	for(int i=len;i>=1;i--)
		cout<<c[i];		
	return 0;
}
2022/10/8 12:35
加载中...