Несколько лет назад я обнаружил интересную проблему программирования:
«Найти номер разбиения n
на сумму трех квадратов с n < 10^9
и ограничением в 1 секунду».
Вопрос: Кто-нибудь знает, как решить эту проблему с заданными ограничениями?
Я думаю, что это может быть сделано исключительно с асимптотической сложностью времени быстрее, чем O(n)
только? Есть ли какой-то умный математический подход или это инженерная задача оптимизации кода?
Я нашел некоторую информацию о https://oeis.org/A000164,, но в разделе FORMULA
есть O(n)
-альго.
(потому что нам нужно найти все делители каждого n-k^2
числа для вычисления e(n-k^2)
) и O(n)
-algo в разделе MAPLE.