View Code of Problem 3494

#include <stdio.h>
#include <math.h>
int cal(int a, int b) {
	if (b)
		while ((b %= a) && (a %= b));
	return a + b;
}
int main() {
	int a1, a2, b1, b2;
	char op;
	while (scanf("%d/%d%c%d/%d", &a1, &a2, &op, &b1, &b2) != EOF) {
		int a, b;
		if (op == '+') {
			if (b2 == a2) {
				a = a1 + b1;
				b = a2;
			}
			else {
				a = a1 * b2 + b1 * a2;
				b = a2 * b2;
			}
		}
		else {
			if (b2 == a2) {
				a = a1 - b1;
				b = a2;
			}
			else {
				a = a1 * b2 - b1 * a2;
				b = a2 * b2;
			}
		}
		if (a == 0) printf("0\n");
		else {
			int lol = cal(abs(a), b); // abs防止负号在后面
			a /= lol;
			b /= lol;
			if (b == 1) printf("%d\n", a);
			else printf("%d/%d\n", a, b);
		}
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 3494