同60分求助......
查看原帖
同60分求助......
759274
Stevehim楼主2022/10/16 12:58
#include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <string>
#define int long long
using namespace std;
int a, b, opt;
int n;

int gb(int x, int y) {
	int gcd = __gcd(x, y);
	return x * y / gcd;
}
int aa[2];

signed main() {
	scanf("%lld", &n);
	if (n == 1) {
		cin >> a >> b;
		int gong = __gcd(a, b);
		a /= gong, b /= gong;
		if (b == 1) {
			cout << a / b;
		} else {
			printf("%lld/%lld", a, b);
		}
	} else {
		scanf("%lld %lld %lld", &a, &b, &opt);
		switch (opt) {
			case 1: {
				aa[0] = a;
				aa[1] = b;
				break;
			}
			case 2: {
				aa[0] = -a;
				aa[1] = -b;
				break;
			}
		}
		for (int i = 1; i < n; i++) {
			scanf("%lld %lld %lld", &a, &b, &opt);
			int gong = gb(aa[1], b); //寻找分母的最小公倍数
			aa[0] = aa[0] * (gong / aa[1]);
			a = a * (gong / b);
			switch (opt) {
				case 1: {
					aa[0] = aa[0] + a;
					aa[1] = gong;
					break;
				}
				case 2: {
					aa[0] = aa[0] - a;
					aa[1] = gong;
					break;
				}
			}
		}
		int gcd = __gcd(aa[0], aa[1]);
		if (aa[1] / gcd == 1) {
			printf("%lld", aa[0] / aa[1]);
		} else {
			printf("%lld/%lld", aa[0] / gcd, aa[1] / gcd);
		}

	}

	return 0;
}

2022/10/16 12:58
加载中...