Она у вас проходит по времени? Использование красно-черных деревьев тут чересчур.у вас сложность

и

памяти. К тому же вам лучше использовать unordered_map.
Надо делать так:
1. Сокращаем

.
2. Считаем

- степени вхождения 5 и 2 в

.
3. Начинаем делить столбиком: выводим целую часть, выводим

цифр предпериода. Запоминаем остаток. Делим дальше пока этот остаток не получиться снова - получаем цифры периода.

- сложность.

памяти если не запоминать результат.