Я думаю, что ответ Ватины - это, вероятно, путь, но я уже набрал , и это может быть полезно, для этого или для чужой аналогичной проблемы .
У меня нет времени этим утром для подробного ответа, но подумайте об этом. 1^2 + 2^2 + 3^2 + ... + n^2
принимает O (n) шаги для вычисления непосредственно. Однако он эквивалентен (n(n+1)(2n+1)/6)
, который может быть вычислен в O (1) раз. Аналогичная эквивалентность существует для любой более высокой интегральной мощности x.
Может возникнуть общее решение таких проблем; Я не знаю одного, , и Wolfram Alpha, похоже, тоже не знает об этом. Однако в общее эквивалентное выражение имеет степень x + 1 и может быть обработано , вычисляя некоторые значения выборки и решая набор линейных уравнений для коэффициентов линейного уравнения .
Однако, это было бы трудно для больших x, например 1000, как в вашей задаче , и, вероятно, не может быть сделано в течение 2 секунд.
Возможно, кто-то, кто знает больше математики, чем я, может превратить это в работоспособное решение ?
Редактировать: Упс, я вижу, что Фабиан Пиджке уже опубликовал полезную ссылку о Faulhaber's formula, прежде чем я разместил сообщение.
@TobySpeight Нет, это определенно отличается. 1^x, 2^x ..., n^x экспоненциально mod, и я хочу найти FAST ALGORITHM, потому что n <= 10^16 и mod = 10^9 + 7. – square1001
n^x mod m совпадает с ((n^(x-1) mod m) * (n mod m)) mod m; (a + b) mod m совпадает с ((mod m) + (b mod m)) mod m. – Vatine
@TobySpeight В моем медленном алгоритме я должен принять мод примерно 10^10 раз. Но это очень медленно, потому что ограничение времени составляет 2 секунды. Я только хочу найти быстрый алгоритм. – square1001