社区讨论

WA点9求助

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

讨论操作

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

当前回复
2 条
当前快照
1 份
快照标识符
@lo7hk1ci
此快照首次捕获于
2023/10/27 01:56
2 年前
此快照最后确认于
2023/10/27 01:56
2 年前
查看原帖
代码
CPP
#include <bits/stdc++.h>
using namespace std;
string a1,b1;
int a[100000000],b[100000000],c[100000000],m=0;
int la,lb;
int main(){
    cin>>a1;
    la=a1.length();//.size()
    for(int i=0;i<la;i++){
    	a[la-1-i]=a1[i]-48;//-'0'
	}
	cin>>b1;
	lb=b1.size();
	for(int i=0;i<lb;i++){
		b[lb-1-i]=b1[i]-'0';//消除前导0 
	}
	if(la>lb){
		for(int i=0;i<max(la,lb);i++){
		if(a[i]>=b[i]) c[i]=a[i]-b[i];
		else {//借位情况 
			a[i+1]-=1;
			a[i]+=10;
			c[i]=a[i]-b[i];
		}
	}
	int len=max(la,lb)-1;
	while(!c[len]) len--;
	for(;len>=0;len--){
		cout<<c[len];
	}
}
	else if (lb>la){
		for(int i=0;i<max(la,lb);i++){
		if(b[i]>=a[i]) c[i]=b[i]-a[i];
		else {
			b[i+1]-=1;
			b[i]+=10;
			c[i]=b[i]-a[i];
		}
	}
	cout<<"-";
	int len=max(la,lb)-1;
	while(!c[len]) len--;
	for(;len>=0;len--){
		cout<<c[len];
	}
}
    else if(la==lb){
    	for(int i=la;i>=0;i--){
    		if(a[i]<b[i]){
    			for(int j=0;j<max(la,lb);j++){
		if(b[j]>=a[j]) c[j]=b[j]-a[j];
		else {
			b[j+1]-=1;
			b[j]+=10;
			c[j]=b[j]-a[j];
		}
	}
	cout<<"-";
	int len=max(la,lb)-1;
	while(!c[len]) len--;
	for(;len>=0;len--){
		cout<<c[len];
	}
	return 0;
			}
		}
	}
	return 0;
}

回复

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

正在加载回复...