程序在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