为什么报错了
查看原帖
为什么报错了
1287452
hanshengyuan2024楼主2024/3/2 11:43

Code:

#include <bits/stdc++.h>
#include <vector>
using namespace std;
string number1, number2;
int jinweide1;
namespace sub {
	bool cmp (vector<int> &A, vector<int> &B) {
	    if (A.size() != B.size()) return A.size() > B.size();
	    for (int i = A.size() - 1; i >= 0; --i) {
	    	if (A[i] != B[i]) return A[i] > B[i];
		}  
	    return true;
	}
	vector<int> sub(vector<int> &A, vector<int> &B) {
	    vector<int> C;
	    int t = 0;
	    for (int i = 0; i < A.size(); ++i) {
	        t = A[i] - t;
	        if (i < B.size()) t -= B[i];
	        C.push_back((t + 10) % 10);
	        if (t < 0) t = 1;
	        else t = 0;
	    }
	    while(C.size() > 1 && C.back() == 0) C.pop_back();
	    return C;
	}
    string ansans = "";
    vector<int> A, B;
    for(int i = number1.size() - 1; i >= 0; --i) {
    	A.push_back(a[i] - '0');
	}
    for(int i = number2.size() - 1; i >= 0; --i) {
    	B.push_back(b[i] - '0');
	}
    vector<int> C;
    if (cmp(A, B)) C = sub(A, B);
    else C = sub(B, A), cout << "-";
    for (int i = C.size() - 1; i >= 0; --i) {
    	ansans += c[i];
	}
}
namespace add {
	string add(string s1, string s2) {
		string s;
		int len1 = s1.length();
		int len2 = s2.length();
		if (len1 < len2) {
			for (int i = 1; i <= len2 - len1; ++i) {
				s1 = "0" + s1;
			}
		} else {
			for (int i = 1; i <= len1 - len2; ++i) {
				s2 = "0" + s2;
			}
		}
		len1 = s1.length();
		int cf = 0;
		int temp;
		for (int i = len1 - 1; i >= 0; --i) {
			temp = s1[i] - '0' +  s2[i] - '0' + cf;
			cf = temp / 10;
			temp %= 10;
			s = char(temp + '0') + s;
		}
		if (cf != 0) s = char(cf + '0') + s;
		return s;
	}
	string add2(string s1, string s2) {
		string s;
		int len1 = s1.length();
		int len2 = s2.length();
		if (len1 < len2) {
			for (int i = len2 - len1; i >= 1; --i) {
				s1 += "0";
			}
		} else {
			for (int i = len1 - len2; i >= 1; --i) {
				s2 += "0";
			}
		}
		len1 = s1.length();
		int cf = 0;
		int temp;
		for (int i = len1; i >= 0; --i) {
			temp = s1[i] - '0' +  s2[i] - '0' + cf;
			cf = temp / 10;
			temp %= 10;
			s = char(temp + '0') + s;
		}
		if (cf != 0) s = char(cf + '0') + s;
		t = s[1];
		s.erase(0, 1);
		return s;
	}
}
using namespace add1;
using namespace sub1;
namespace solve {
	int t = 0;
	bool check(string s) {
		for (int i = 0; i < s.size(); ++i) {
			if (s[i] == '.') return true;
			else t++;
		}
		return false;
	}
	string solve(string s1, string s2) {
		if (s1[i] == '+') s1.erase(0, 1);
		bool b = check(s1);
		bool b2 = check(s2);
		// b 判断是否为小数
		string ans1 = "", ans2 = "";
		if (b) {
			for (int i = t + 1; i < s.size(); ++i) {
				ans1 = s1[i] + ans1;
			}
		}
		if (b2) {
			t = check(s2);
			for (int i = t + 1; i < s.size(); ++i) {
				ans2 = s2[i] + ans2;
			}
		}
		string cnt1 = "", cnt2 = "";
		if (ans2[1] == '-') {
			cnt1 = sub(s1, s2);
		} else {
			cnt1 = add(s1, s2);
		}
		cnt2 = cnt2 + to_string(t);
		cnt2 = cnt2 + add2(ans1, ans2);
		string answer = "";
		answer = answer + cnt1;
		answer = answer + ".";
		answer = answer + cnt2;
		return answer;
	}
}
using namespace solve;
int main() {
	cin >> s1 >> s2;
	cout << solve(s1, s2);
}

在线等,挺急的,回复请@

2024/3/2 11:43
加载中...