样例一本地测试结果一样,但0分
查看原帖
样例一本地测试结果一样,但0分
846713
Joker_IV楼主2024/3/17 19:46
#include <bits/stdc++.h>
using namespace std;
#define MAXN 10100
bool cmp(string a,string b){//比大小
	int lena=a.length(),lenb=b.length();
	if(lena>lenb)return true;
	else if(lena<lenb)return false;
	else{
		while(lena>0){
			if(a[lena-1]<b[lena-1])return false;
			lena--;
		}
		return true;
	}
}
int main(){
	string x,y;
	cin>>x>>y;
	if(cmp(x,y)){
		int a[MAXN],b[MAXN],c[MAXN],lena=x.length(),lenb=y.length();
		for(int i=1;i<=lena;i++)a[i]=x[lena-i]-'0';
		for(int i=1;i<=lenb;i++)b[i]=y[lenb-i]-'0';
		int lenc=max(lena,lenb);
		for(int i=1;i<=lenc;i++){
			c[i]+=a[i]-b[i];
			if(i!=lenc&&c[i]<0){
				c[i]+=10;
				c[i+1]-=1;
			}
		}
		while(c[lenc]==0&&lenc!=1)lenc--;
		while(lenc>0)cout<<c[lenc--];
	}
	else{
		cout<<"-";
		int a[MAXN],b[MAXN],c[MAXN],lena=y.length(),lenb=x.length();
		for(int i=1;i<=lena;i++)a[i]=y[lena-i]-'0';
		for(int i=1;i<=lenb;i++)b[i]=x[lenb-i]-'0';
		int lenc=max(lena,lenb);
		for(int i=1;i<=lenc;i++){
			c[i]+=a[i]-b[i];
			if(i!=lenc&&c[i]<0){
				c[i]+=10;
				c[i+1]-=1;
			}
		}
		while(c[lenc]==0&&lenc!=1)lenc--;
		while(lenc>0)cout<<c[lenc--];
	}
	return 0;
} 
/*样例一;
输入:30141
     8160
输出:21981
我的输出:21981
*/
2024/3/17 19:46
加载中...