水题,WA了一次,没有考虑到最终结果中 分子%分母 为0的情况
#include<cstdio> #define abs(a) a>0?a:-a int gcd(int a, int b) { int max, min; if(a > b) { max = a; min = b; } else { max = b; min = a; } int r = max%min; while(r != 0) { max = r; if(r < min) { max = min; min = r; } r = max%min; } return min; } int lcm(int a, int b) { int g = gcd(a, b); return a/g*b; } int main() { freopen("poj3979.txt", "r", stdin); int f1, f2, d1, d2; int f, d, g; while(scanf("%d/%d%d/%d", &f1, &d1, &f2, &d2) != EOF) { d = lcm(abs(d1), abs(d2)); f = d/d1*f1 + d/d2*f2; if(f == 0) { printf("0\n"); } else if(f%d == 0) { printf("%d\n", f/d); } else { g = gcd(d, abs(f)); printf("%d/%d\n", f/g, d/g); } } return 0; } |