Всем привет!
Как многие знают, недавно прошел этап OpenCup, где была задача на подсчет числа N! (N<=40.000). Мы на джаве написали какое-то решение средней паршивости, использующее BigInteger, которое работало на макстесте около секунды. Однако с выводом мы уж совсем не успевали(там около 150кб ответ, из-за кривости рук на вывод тратилось порядка 5 секунд минимум).
В связи с этим встал небольшой вопрос, кто как умеет быстро выводить BigInteger в Java(если такие есть), желательно с примером кода, чтобы понять, каким классом и как именно вы выводите.
Да, я знаю правильное решение этой задачи без BigInteger, на этом можно не останавливаться.
Надеюсь информация будет полезна не только мне, спасибо всем за внимание и заранее спасибо за ваши ответы :)
Есть подозрение, что никак. Слишком долго происходит конвертация из внутреннего представления. Это весьма известная проблема BigInteger.
видел где-то код, где вывод осуществлялся чем-то наподобие разделяй и властвствуй: делим число на 10^(k/2), где k ~ log10(x) и выводим половинки рекурсивно, получался серьёзный прирост в скорости.