程序在C ++中查找给定序列的总和

在本教程中,我们将讨论一个程序,用于查找给定序列(1 * 2 * 3 * ... * k)+(2 * 3 * ... * k *(k + 1))+(3 * 4 * .. *(k + 1)*(k + 2))+ ..... +((n-k + 1)*(n-k + 2)* ... *(n-k + k))

为此,我们将获得值n和k。我们的任务是在给定值的基础上计算给定序列项并计算其总和。

示例

#include <bits/stdc++.h>

using namespace std;

const long long MOD = 1000000007;

//查找模逆

long long modInv(long long x) {

   long long n = MOD - 2;

   long long result = 1;

   while (n) {

      if (n & 1)

      result = result * x % MOD;

      x = x * x % MOD;

      n = n / 2;

   }

   return result;

}

//找到给定序列的总和

long long getSum(long long n, long long k) {

   long long ans = 1;

   for (long long i = n + 1; i > n - k; i--)

      ans = ans * i % MOD;

      ans = ans * modInv(k + 1) % MOD;

   return ans;

}

int main() {

   long long n = 3, k = 2;

   cout<<getSum(n,k);

   return 0;

}

输出结果

8

以上是 程序在C ++中查找给定序列的总和 的全部内容, 来源链接: utcz.com/z/360835.html

回到顶部