6 条题解
-
0
#include <stdio.h> int main() { int a, b, c, d; char m; while (scanf("%d/%d%c%d/%d", &a, &b, &m, &c, &d) != EOF) { if (m == '+') { int zi = a * d + b * c; int mu = b * d; int p, q; int g = mu, temp; int x = zi; while (x != 0) { temp = g % x; g = x; //辗转相除算最大公约数 x = temp; } p = zi / g; q = mu / g; if (q < 0) { p = -p; q = -q; } if (q == 1) { printf("%d\n", p);//特例,分母为1时 } else { printf("%d/%d\n", p, q); } } else if (m == '-') { int zi = a * d - b * c; int mu = b * d; int mu1; int flag = 1; if (zi < 0) { mu1 = -zi; flag = 0; } else { mu1 = zi; flag = 1; } int g = mu, temp; int x = mu1; while (x != 0) { temp = g % x; g = x; //同样的辗转相除 x = temp; } int p = zi / g; int q = mu / g; if (q < 0) { p = -p; q = -q; } if (p == 0) { printf("0\n"); } else { printf("%d/%d\n", p, q); } } } }
信息
- ID
- 168
- 时间
- 3000ms
- 内存
- 128MiB
- 难度
- 7
- 标签
- (无)
- 递交数
- 753
- 已通过
- 172
- 上传者