# Program to find sum of the given sequence

Given two numbers and . The task is to find the sum of the sequence given below.

(1*2*3*…*k) + (2*3*…*k*(k+1)) + (3*4*..*(k+1)*(k+2)) +…..+((n-k+1)*(n-k+2)*…*(n-k+k)).

Since the output can be large, print the answer under modulo 10^9+7.

Examples:

Input : N = 3, K = 2
Output : 8

Input : N = 4, K = 2
Output : 20


## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Let us take the given example and try to reduce it to a general formula.

In the given example for n = 3 and k=2,

Sum = 1*2 + 2*3

We know that: So each term is of the form: If we multiply and divide by , it becomes Which is nothing but, Therefore, But since n is so large we can not calculate it directly, we have to simplify the above expression.

On Simplifying we get, Below is the implementation of the above idea:

## C++

 // CPP program to find the sum of the  // given sequence     #include  using namespace std;     const long long MOD = 1000000007;     // function to find moudulo inverse  // under 10^9+7  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;  }     // Function to find the sum of the   // given sequence  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;  }     // Driver code  int main()  {      long long n = 3, k = 2;             cout<

## Java

 // Java program to find the sum of the   // given sequence      class GFG {         static long MOD = 1000000007;     // function to find moudulo inverse   // under 10^9+7       static long modInv(long x) {          long n = MOD - 2;          long result = 1;          while (n > 0) {              if ((n & 1) > 0) {                  result = result * x % MOD;              }              x = x * x % MOD;              n = n / 2;          }             return result;      }     // Function to find the sum of the   // given sequence       static long getSum(long n, long k) {          long ans = 1;             for (long i = n + 1; i > n - k; i--) {              ans = ans * i % MOD;          }          ans = ans * modInv(k + 1) % MOD;             return ans;      }     // Driver code       public static void main(String[] args) {          long n = 3, k = 2;          System.out.println(getSum(n, k));      }  } 

## Python3

 # Python3 program to find the sum   # of the given sequence     MOD = 1000000007;     # function to find moudulo inverse  # under 10^9+7  def modInv(x):         n = MOD - 2;      result = 1;      while (n):          if (n&1):              result = result * x % MOD;          x = x * x % MOD;          n = int(n / 2);             return result;     # Function to find the sum of   # the given sequence  def getSum(n, k):         ans = 1;             for i in range(n + 1, n - k, -1):          ans = ans * i % MOD;      ans = ans * modInv(k + 1) % MOD;             return ans;     # Driver code  n = 3;  k = 2;         print(getSum(n,k));         # This code is contributed by mits 

## C#

 // C# program to find the sum of the  // given sequence  using System;            // function to find moudulo inverse  // under 10^9+7  class gfg  {      public long MOD = 1000000007;   public long modInv(long x)   {      long n = MOD - 2;      long result = 1;      while (n >0) {          if ((n & 1) > 0)              result = result * x % MOD;          x = x * x % MOD;          n = n / 2;      }             return result;  }     // Function to find the sum of the   // given sequence    public long getSum(long n, long k)    {      long ans = 1;             for (long i = n + 1; i > n - k; i--)          ans = ans * i % MOD;      ans = ans * modInv(k + 1) % MOD;             return ans;   }  }     // Driver code  class geek  {    public static int Main()   {       gfg g = new gfg();      long n = 3, k = 2;             Console.WriteLine(g.getSum(n,k));             return 0;   }  }  //This code is contributed by SoumikMondal 

## PHP

  $n - $k; $i--)   $ans = $ans * $i % $MOD;   $ans = $ans * modInv($k + 1) % $MOD;     return $ans;  }     // Driver code  $n = 3; $k = 2;         echo getSum($n, $k);     // This code is contributed   // by Akanksha Rai  ?> 

Output:

8
`

Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: DSA Self Paced. Become industry ready at a student-friendly price.

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.