求助!样例能过,下载的数据也能过,但是0分
查看原帖
求助!样例能过,下载的数据也能过,但是0分
1123382
asezllh楼主2024/5/10 19:24
#include<bits/stdc++.h>
using namespace std;
int n,k1,k2;
int a[10090],b[10090],c[10090];
int blog=0;
//高精度减法
void jian(int a[],int b[]){
	if(k1>k2){
		for(int i=0;i<k1;i++){
			c[i]=a[i]-b[i];
//			l=i;
			if(c[i]<0){ c[i]+=10;a[i+1]--;}
		}
		return;
	}
	if(k1==k2){
		for(int i=k1-1;i>=0;i--) 
			if(a[i]<b[i]){blog=1;break;}
		
		if(blog==0){
			for(int i=0;i<k1;i++){
				c[i]=a[i]-b[i];
//				l=i;
				if(c[i]<0){c[i]+=10;a[i+1]--;}
			}
		}
		
		else{
			for(int i=0;i<k1;i++){
				c[i]=b[i]-a[i];
//				l=i;
				if(c[i]<0){c[i]+=10;a[i+1]--;}
			}
		}
		return;
	}
	else {blog=1;
		for(int i=0;i<k2;i++){
			c[i]=b[i]-a[i];
//			l=i;
			if(c[i]<0){c[i]+=10;b[i+1]--;}	
		}
	}
}

int main(){
	string a1,a2;
	getline(cin,a1);
	getline(cin,a2);
	k1=a1.length();
	k2=a2.length();
	//翻转 + char->int
	int m1=k1,m2=k2;
	for(int i=0;i<k1;i++){
		m1--;
		a[m1]=a1[i]-'0';
	}
	for(int i=0;i<k2;i++){
		m2--;
		b[m2]=a2[i]-'0';
	}
	
	jian(a,b);
	
//	for(int i=0;i<k1;i++) cout<<a[i];cout<<endl;
//	for(int i=0;i<k2;i++) cout<<b[i];
	
	int l=max(k1,k2);
	if(blog==1) cout<<"-";
	while(c[l]==0){l--;}
	for(int i=l;i>=0;i--) cout<<c[i];

	return 0;	
}
2024/5/10 19:24
加载中...