全RE,该对必关
查看原帖
全RE,该对必关
708533
oyht123楼主2025/7/30 10:40
#include <bits/stdc++.h>
using namespace std;
struct fs {
	long long x, y;
	bool z;
} f[100];
long long sum, fmcar = 1;
string n;
long long fm, fz, kf = 0;
long long yf(long long a, long long b) {//约分
	for (int i = max(a, b); i >= 1; i--) {
		if (a % i == 0 && b % i == 0) {
			a /= i;
			b /= i;
		}
	}
	if (kf < 0) {
		cout << "-" << a << "/" << b;
	}
	cout << a << "/" << b;
}
long long cf(string n) {//拆分分子分母
	fm = 0, fz = 0;
	long long fw = 1, js = 0;
	for (long long i = 0; i < n.size(); i++) {
		if (n[i] == '/') {
			fw = 1;
			js = 1;
		} else if (js == 0) {
			fz += (n[i] - '0') * fw;
			fw *= 10;
		} else {
			fm += (n[i] - '0') * fw;
			fw *= 10;
		}
	}
}
void fscf() {//拆分分数
	string j = "";
	bool fh = 0;
	for (long long i = 0; i < n.size(); i++) {
		if (n[i] == '-') {
			cf(j);
			f[++sum].z = fh;
			f[sum].x = fz;
			f[sum].y = fm;
			j = "";
			fh = 1;
		} else if (n[i] == '+') {
			cf(j);
			f[++sum].z = fh;
			f[sum].x = fz;
			f[sum].y = fm;
			j = "";
			fh = 0;
		} else {
			j += n[i];
		}
	}
	cf(j);
	f[++sum].z = fh;
	f[sum].x = fz;
	f[sum].y = fm;
}
int main() {
	cin >> n;
	fscf();
	for (long long i = 1; i <= sum; i++) {
		fmcar *= f[i].y;
	}
	for (long long i = 1; i <= sum; i++) {
		long long c = fmcar / f[i].y;
		f[i].x *= c;
		f[i].y *= c;
	}
	for (long long i = 1; i <= sum; i++) {
		if (f[i].z == 0) {
			kf += f[i].x;
		} else {
			kf -= f[i].x;
		}
	}
	yf(kf, f[1].y);

	return 0;
}


也不知道为什么

提交记录

2025/7/30 10:40
加载中...