Я хочу написать функцию, которая возвращает сумму x ^ N, для x 1 до K
где K порядка 10 ^ 9 и N порядка 10 ^ 5
Очевидно, что я хочу конечное значение по модулю 10 ^ 9 + 7
Мы не можем просто зацикливаться на K, так как он истечет. Я думаю, что это может быть преобразовано в какой-то цикл над N. Я читал статью об этом, но не смог придумать код.
int fun(int n , int K){
int sum = 0;
int mod = 1e9+7;
for(int i = 1; i <= K; i++){
sum += power(i,n);
sum %= mod;
}
return sum;
}
Например:
вход: 2 3
выход: 14
(1 ^ 2 + 2 ^ 2 + 3 ^ 2)
Я наткнулся на Формула Фолхабера , но она состоит из чисел Бернаули, и я не знаю, как ее вычислить.