В этой статье я не буду разбирать какой-либо алгоритм или решение олимпиадной задачи, а будет обычное написание класса. Но я считаю, что стоит это сделать, чтобы в следующих статьях я мог ссылаться на него, а не реализовывать каждый раз. Более того, всем рекомендую иметь и пополнять свою библиотеку классов и алгоритмов, которые вы сможете применять в онлайн соревнованиях. Писать буду класс рациональных чисел (простыми словами: дроби). Это бывает полезно, когда не хочется связываться с вещественными числами (а я рекомендую всегда, где это возможно, их избегать, потому что в них накапливаются ошибки округлений, возникают сложности со сравнением и, как следствие, сортировкой и хранением в set'е и т.д.). Например в задачах на геометрию все операции можно делать в рациональных числах до момента вывода ответа или вычисления квадратного корня (а эту операцию часто удаётся оставить напоследок). Для дроби будем хранить числитель (numerator) и знаменатель (denominator), причём знаменатель не дол