已AC代码:
#include<cstdio>
#include<cmath>
#include<cstdlib>
using namespace std;
int GCD(int x, int y)
{
return y?GCD(y, x%y):x;
}
int main()
{
char s;
int q1, q2, p1, p2;
while((scanf("%d/%d%c%d/%d", &p1, &q1, &s, &p2, &q2)) != EOF)
{
int d, m, t;
if(s == '+')
{
d = GCD(q1, q2);
d = q1*q2/d;
m = p1*(d/q1) + p2*(d/q2);
t = GCD(d, m);
if(m%d == 0)
printf("%d\n", m/d);
else
printf("%d/%d\n", m/t, d/t);
}
else
{
d = GCD(q1, q2);
d = q1*q2/d;
m = p1*(d/q1) - p2*(d/q2);
t = GCD(d, m);
if(m%d == 0)
printf("%d\n", m/d);
else
{
if(m<0)
printf("%d/%d\n", -m/t, -d/t);
else
printf("%d/%d\n", m/t, d/t);
}
}
}
return 0;
}