Класс RationalNumber

Ваша задача — определить класс RationalNumber на языке Python. Этот класс должен использоваться для представления рационального числа, то есть числа, которое можно выразить как отношение двух целых чисел (числителя и знаменателя).

Класс RationalNumber должен обладать следующими характеристиками:

  • Класс должен иметь два приватных целочисленных атрибута: numerator (числитель) и denominator (знаменатель) рационального числа.

  • Класс должен определить магические методы __add__, __sub__, __mul__ и __truediv__ для выполнения сложения, вычитания, умножения и деления двух рациональных чисел соответственно.

  • Операции сложения, вычитания, умножения и деления должны выполняться математически корректно для рациональных чисел, а результатом должен быть новый экземпляр класса RationalNumber.

  • Класс должен сокращать рациональное число до его простейшей формы, деля числитель и знаменатель на их наибольший общий делитель (НОД).

  • Класс должен реализовать магический метод __str__, который возвращает строку <numerator> / <denominator> в сокращенном виде.

Ввод

Вывод

print(RationalNumber(1, 2) + RationalNumber(1, 3)); print(RationalNumber(1, 2) - RationalNumber(1, 3)); print(RationalNumber(1, 2) * RationalNumber(1, 3)); print(RationalNumber(1, 2) / RationalNumber(1, 3));

5 / 6
1 / 6
1 / 6
3 / 2

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue