View Code of Problem 3494

#include <stdio.h>
#include <math.h>

int gcd(int x, int y) {
	if (y == 0) {
		return x;
	}
	return gcd(y, x%y);
}

int main() {
	int a, b, d, e;
	char c;
	while (scanf("%d/%d%c%d/%d", &a, &b, &c, &d, &e) != EOF) {
		int x, y;
		if (c == '+') {
			if (b == e) {
				x = a + d;
				y = b;
			}
			else {
				x = a * e + b * d;
				y = b * e;
			}
		}
		else {
			if (b == e) {
				x = a - d;
				y = b;
			}
			else {
				x = a * e - b * d;
				y = b * e;
			}
		}
		if (x == 0) {
			printf("0\n");
		}
		else {
			int m = x / gcd(abs(x), y);
			int n = y / gcd(abs(x), y);
			if (n == 1) {
				printf("%d\n", m);
			}
			else {
				printf("%d/%d\n", m, n);
			}
		}
	}
}

Double click to view unformatted code.


Back to problem 3494