第六个点在本地过了,但是却wa,求助
查看原帖
第六个点在本地过了,但是却wa,求助
1070929
ascendencies楼主2024/9/22 17:42
#include<bits/stdc++.h>
using namespace std;
int a[10100];
int b[10100];
int c[10100];
char aa[10100];
char bb[10100];
void subtraction(int a[],int b[],int c[],int size_a,int size_b);
int aBigger(int a[],int b[],int size_a,int size_b){
	if(size_a>size_b) return 1;
	else if(size_a<size_b) return 0;
	else{
		for(int i=size_a;i>=0;i++){
			if(a[i]>b[i]) return 1;
			else if(a[i]<b[i]) return 0;
			else continue; 
		}
	}
	//如果两者相等返回2 

	return 2;
}
int main(){
	int size_a,size_b;
	cin>>aa;
	cin>>bb;
	size_a=strlen(aa);
	size_b=strlen(bb);
	int j=0;
	for(int i=size_a-1;i>=0;i--)
		a[i]=aa[j++]-'0';
	j=0;
	for(int i=size_b-1;i>=0;i--)
		b[i]=bb[j++]-'0';
	int ans=aBigger(a,b,size_a,size_b);
	if(ans==1)
		subtraction(a,b,c,size_a,size_b);
	else if(ans==0){
		cout<<"-";
		subtraction(b,a,c,size_b,size_a);
	}else{
		cout<<"0";
		
	}
	return 0;
}
void subtraction(int a[],int b[],int c[],int size_a,int size_b){
	int jiewei=0,benwei=0;
	int weishu=max(size_a,size_b);
	for(int i=0;i<weishu;i++){
		int current=a[i]-b[i]-jiewei;
		if(current<0){
			//需要借位
			jiewei=1;
			benwei=current+10; 
		}else{
			jiewei=0;
			benwei=current;
		}
		c[i]=benwei;
	}
	//从第一个不为0的位置开始输出 
	int flag=0;
	for(int i=weishu-1;i>=0;i--)
		if(c[i]){
			flag=i;
			break;
		}
	for(int i=flag;i>=0;i--)
		cout<<c[i];
}
2024/9/22 17:42
加载中...