高精度减法这样写为什么不对
查看原帖
高精度减法这样写为什么不对
1155645
_just_a_OIer_LsQ_楼主2024/7/2 18:09

rt,代码如下:

#include<bits/stdc++.h>
using namespace std;
string s1,s2;
int a[1000010],b[1000010],c[1000010];
int main(){
	cin>>s1>>s2;
//	getline(cin,s1);
//	getline(cin,s2);
	for(int i=0;i<s1.size();i++) a[s1.size()-i-1]=s1[i]-'0';
	for(int i=0;i<s2.size();i++) b[s2.size()-i-1]=s2[i]-'0';
	char flag='+';
	if(s1.size()<s2.size()||s1.size()==s2.size()&&s1<s2){
		swap(s1,s2);
		flag='-';
	}
	for(int i=0;i<s1.size();i++){
		if(a[i]<b[i]){
			a[i]+=10;
			a[i+1]-=1;
		} 
		c[i]=a[i]-b[i];
	}
	cout<<endl<<"-:"; 
	flag=='-'?cout<<flag:cout<<"";
	int index=0;
	for(int i=s1.size()-1;i>=0;i--){
		if(c[i]!=0){
			index=i;
			break;
		}
	}
	for(int i=index;i>=0;i--) cout<<c[i];//减 
}
2024/7/2 18:09
加载中...