Program to find sum of the given sequence - GeeksforGeeks

14 Mar, 2022
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
 
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++
Java
Python3
C#
PHP
Javascript
// CPP program to find the sum of the// given sequence #include <bits/stdc++.h>using namespace std; const long long MOD = 1000000007; // function to find modulo inverse// under 10^9+7long 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 sequencelong 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 codeint main(){    long long n = 3, k = 2;         cout<<getSum(n,k);         return 0;}
// Java program to find the sum of the// given sequence class GFG {     static long MOD = 1000000007; // function to find modulo 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 program to find the sum# of the given sequence MOD = 1000000007; # function to find modulo inverse# under 10^9+7def 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 sequencedef 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 coden = 3;k = 2;     print(getSum(n,k));     # This code is contributed by mits
// C# program to find the sum of the// given sequenceusing System;    // function to find modulo inverse// under 10^9+7class 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 codeclass 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// PHP program to find the sum of// the given sequence // function to find modulo inverse// under 10^9+7function modInv($x){    $MOD = 1000000007;    $n = $MOD - 2;    $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 sequencefunction getSum($n, $k){    $MOD = 1000000007;    $ans = 1;         for ($i = $n + 1; $i > $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?>
<script> // Javascript program to find the sum of the// given sequence var MOD = 100000007; // function to find modulo inverse// under 10^9+7function modInv(x){    var n = MOD - 2;    var 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 sequencefunction getSum(n, k){    var ans = 1;         for (var i = n + 1; i > n - k; i--)        ans = ans * i % MOD;    ans = ans * modInv(k + 1) % MOD;         return ans;} // Driver codevar n = 3, k = 2; document.write( getSum(n,k)); // This code is contributed by noob2000.</script>
8
 
SoumikMondal
29AjayKumar
Mithun Kumar
Akanksha_Rai
noob2000
varshagumber28
math
Modular Arithmetic
series
C++ Programs
Mathematical
Mathematical
series
Modular Arithmetic
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
C++ Program for QuickSort
Shallow Copy and Deep Copy in C++
delete keyword in C++
Passing a function as a parameter in C++
cin in C++
Program for Fibonacci numbers
C++ Data Types
Write a program to print all permutations of a given string
Set in C++ Standard Template Library (STL)
Coin Change | DP-7