90分,wa#7,真的搞不明白
查看原帖
90分,wa#7,真的搞不明白
854995
flyWang楼主2023/10/5 16:54
#include<bits/stdc++.h>
using namespace std;
bool  isLarge(const string& a,const string& b) {
       //这俩都大于0的
	if (a.size() == b.size()) {
		return a >= b;
	}
	return a.size() > b.size();
}
//这个函数return true代表a >= b 不然就 a < b
int main() {
	//刚开始得判断谁大,不然这没法做,确实想不到怎么转
	string a, b;
	cin >> a >> b;
	bool sign = true;//a >= b是true
	if (!isLarge(a, b)) {
		swap(a, b);
		sign = false;
	}
    //这样之后就确保了a >= b
	//开始高精度计算
	int ib = b.size() - 1;//b的长度小于等于a
	int ia = a.size() - 1;
	int val;
	while (ib >= 0) {
		val = a[ia] - b[ib];
		while(val < 0) {//需要借位了
			val += 10;
			--a[ia - 1];
		}
		//这样就拿到结果了
		a[ia] = val + '0';
		--ia; --ib;
	}
	int index = 0;
	while (index < a.size() && a[index] == '0')index++;
	if (index == a.size()) cout << 0 << endl;
	else {
		if (!sign) cout << "-" << a.substr(index);
		else cout << a.substr(index) << endl;
	}
	return 0;	
}

也不知道为啥错了...

2023/10/5 16:54
加载中...