Очевидно, що {a \over b} + {c \over d} = {ad + bc \over bd}. Залишається скоротити результуючий дріб на їх найбільший спільний дільник.
Реалізація алгоритму
Функція gcd повертає найбільший спільний дільник чисел та .
int gcd(int a, int b)
{
return (!b) ? a : gcd(b,a % b);
}Основна частина програми. Читаємо вхідні дані.
scanf("%d %d %d %d",&a,&b,&c,&d);Вираховуємо результуючий дріб .
p = a * d + c * b;
q = b * d;Вираховуємо НСД чисельника та знаменника. Скорочуємо дріб.
g = gcd(p,q);
p /= g; q /= g;Виводимо відповідь. Якщо відповіддю є ціле число (знаменник дорівнює ), то виводимо тільки чисельник.
if (q == 1) printf("%d\n",p);
else printf("%d %d\n",p,q);Python реалізація
Читаємо вхідні дані.
a, b, c, d = map(int, input().split())Вираховуємо результуючий дріб .
p = a * d + c * b
q = b * dВираховуємо НСД чисельника та знаменника. Скорочуємо дріб.
g = math.gcd(p, q)
p //= g
q //= gВиводимо відповідь. Якщо відповіддю є ціле число (знаменник дорівнює ), то виводимо тільки чисельник.
if q == 1: print(p)
else: print(p, q)