Ох. Таких вещей без знания теории делать нельзя.
Но если
очень хочется нет бортовой длинной арифметики, то можно. И о знании какой теории речь? Мне тоже не нравится использование плавающей арифметики в этой задаче, я в курсе, что точности 15 знаков не хватит при 10-й степени, но я увидел, что и целочисленной 64-битной арифметики при наивной реализации (без взаимно простых модулей) также не хватит, и написал такой хак, с целью проверить прохождение тестов, не усложняя расчет - они прошли. Тем более, этот момент не является хоть сколь-нибудь критичным в плане самого алгоритма. При наличии более серьезных тестов разумеется я бы рассчитал в целых, написав для этого свой велосипед или подключив какую-нибудь либу.
ЗЫ если на то пошло, там и функцию сортировки результата надо поменять, ибо она сортирует через приведение к даблам, а на близких рациональных числах при больших числителях/знаменателях это тоже может привести к ошибке - и я отлично это понимаю, и знаю, что таких вещей делать нельзя
ЗЗЫ если бы я добавлял эту задачу на сайт, я бы разумеется добавил самые жесткие тесты, чтобы подобная халява не проходила - как я делал в подобных случаях, например в моих катах на Кодоворсах. Результат - народ просто не решает и все
А в случае данной задачи достаточно просто один в один переписать алгоритм на Питоне, где тоже есть авторесайзящиеся вектора и из коробки длинная арифметика - благо в списке языков для проверки решений он есть
И пары на Питоне тоже в ядре и не такие страшные по синтаксису, и скорость алгоритма позволяет его реализовать на любом медленном скрипте - прямо все аргументы за Питон, действительно зря я по инерции на плюсах решал.