社区讨论

玄/////关/////求/////调/////50

P2142高精度减法参与者 3已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@m0dnkksf
此快照首次捕获于
2024/08/28 17:27
2 年前
此快照最后确认于
2025/11/04 22:10
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
bool check(string s1,string s2){
	if(s1.size()<s2.size()) return 1;
	else if(s2.size()<s1.size()) return 0;
	else{
		if(s2>s1) return 1;
		else return 0;
	}
}
string jianfa(string s1,string s2){
	if(s1==s2){
		string ans;
		ans="0";
		return ans;
	}
	bool ok=check(s1,s2);
	if(ok) {
		swap(s1,s2);
    }
	int a[2500]={},b[2500]={},c[2500]={},d[2500]={};
	for(int i=0;i<s1.size();i++){
		a[i]=s1[s1.size()-i-1]-'0';
	}
	for(int i=0;i<s2.size();i++){
		b[i]=s2[s2.size()-i-1]-'0';
    }
	int len=max(s1.size(),s2.size());
	for(int i=0;i<len;i++){
		c[i]=a[i]-b[i]-d[i];
		if(c[i]<0){
			d[i+1]++;
			c[i]+=10;
		}
	}
	while(c[len]==0){
		len--;
	}
	string ans="";
	for(int i=len;i>=0;i--){
		ans+=(char)(c[i]+48);
	}
	if(ok) ans="-"+ans;
	return ans;
}
int main(){
	string a,b;
	cin>>a>>b;
	cout<<jianfa(a,b)<<endl;
	return 0;
}

回复

5 条回复,欢迎继续交流。

正在加载回复...