Kəsrlərin cəmi#7363

Kəsrlərin cəmi (Həll təhlili)

Aydındır ki, {a \over b} + {c \over d} = {ad + bc \over bd}. Nəticə alınan kəsri onların ən böyük ortaq böləni ilə sadələşdirmək qalır.

Alqoritmin reallaşdırılması

gcd funksiyası və ədədlərinin ən böyük ortaq bölənini qaytarır.

int gcd(int a, int b)
{
  return (!b) ? a : gcd(b,a % b);
}

Proqramın əsas hissəsi. Giriş məlumatlarını oxuyuruq.

scanf("%d %d %d %d",&a,&b,&c,&d);

Nəticə alınan kəsri hesablayırıq.

p = a * d + c * b;
q = b * d;

Surət və məxrəc üçün ƏBOB hesablayırıq. Kəsri sadələşdiririk.

g = gcd(p,q);
p /= g; q /= g;

Cavabı çıxış edirik. Əgər cavab tam ədəddirsə (məxrəc bərabərdir -ə), yalnız surəti çıxış edirik.

if (q == 1) printf("%d\n",p);
else printf("%d %d\n",p,q);

Python reallaşdırılması

Giriş məlumatlarını oxuyuruq.

a, b, c, d = map(int, input().split())

Nəticə alınan kəsri hesablayırıq.

p = a * d + c * b
q = b * d

Surət və məxrəc üçün ƏBOB hesablayırıq. Kəsri sadələşdiririk.

g = math.gcd(p, q)
p //= g
q //= g

Cavabı çıxış edirik. Əgər cavab tam ədəddirsə (məxrəc bərabərdir -ə), yalnız surəti çıxış edirik.

if q == 1: print(p)
else: print(p, q)