輸入 t 組測試數據,每組給四個整數 a b c d,計算 a/b + c/d 並輸出最簡分數形式(分子 分母)。
x = a*d + b*c,分母 y = b*d。g = gcd(x, y)。x/g y/g。#include <cstdio>
int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a % b);
}
int main() {
int t;
scanf("%d", &t);
while (t--) {
int a, b, c, d;
scanf("%d%d%d%d", &a, &b, &c, &d);
int x = a * d + b * c;
int y = b * d;
int g = gcd(x, y);
printf("%d %d\n", x / g, y / g);
}
return 0;
}
O(t * log(max(x,y))),輾轉相除法極快。O(1)。