 GeeksforGeeks App
Open App Browser
Continue

## Related Articles

Defined a function that calculates the twice of sum of first N natural numbers as sum(N). Your task is to modify the function to sumX(N, M, K) that calculates sum( K + sum( K + sum( K + …sum(K + N)…))), continuing for M terms. For a given N, M and K calculate the value of sumX(N, M, K)
Note: Since the answer can be very large, print the answer in modulo 10^9 + 7.
Examples:

Input: N = 1, M = 2, K = 3
Output: 552
For M = 2
sum(3 + sum(3 + 1)) = sum(3 + 20) = 552.
Input: N = 3, M =3, K = 2
Output: 1120422
For M = 3
sum(2 + sum(2 + sum(2 + 3))) = sum(2 + sum(2 + 30)) = sum(2 + 1056) = 1120422.

Recommended Practice

Approach:

• Calculate value of sum(N) using the formula N*(N + 1).
• Run a loop M times, each time adding K to the previous answer and applying sum(prev_ans + K), modulo 10^9 + 7 each time.
• Print the value of sumX(N, M, K) in the end.

Below is the implementation of the above approach:

## C++

 `// C++ program to calculate the ``// terms of summing of sum series` `#include ` `using` `namespace` `std;``# define MOD 1000000007` `// Function to calculate``// twice of sum of first N natural numbers``long` `sum(``long` `N){``    ` `    ``long` `val = N * (N+1);``    ``val = val % MOD;``    ` `    ``return` `val;``}` `// Function to calculate the``// terms of summing of sum series``int` `sumX(``int` `N, ``int` `M, ``int` `K){``    ` `    ``for` `(``int` `i = 0; i < M; i++) {``        ``N = (``int``)sum(K + N);``    ``}``    ` `    ``N = N % MOD;``    ``return` `N;``}` `// Driver Code``int` `main()``{``    ``int` `N = 1, M = 2, K = 3;``    ``cout << sumX(N, M, K) << endl;``   ` `    ``return` `0;``}` `// This code is contributed by Rituraj Jain`

## Java

 `// Java program to calculate the``// terms of summing of sum series` `import` `java.io.*;``import` `java.util.*;``import` `java.lang.*;` `class` `GFG {` `    ``static` `int` `MOD = ``1000000007``;` `    ``// Function to calculate``    ``// twice of sum of first N natural numbers``    ``static` `long` `sum(``long` `N)``    ``{``        ``long` `val = N * (N + ``1``);` `        ``// taking modulo 10 ^ 9 + 7``        ``val = val % MOD;` `        ``return` `val;``    ``}` `    ``// Function to calculate the``    ``// terms of summing of sum series``    ``static` `int` `sumX(``int` `N, ``int` `M, ``int` `K)``    ``{``        ``for` `(``int` `i = ``0``; i < M; i++) {``            ``N = (``int``)sum(K + N);``        ``}``        ``N = N % MOD;``        ``return` `N;``    ``}` `    ``// Driver code``    ``public` `static` `void` `main(String args[])``    ``{``        ``int` `N = ``1``, M = ``2``, K = ``3``;``        ``System.out.println(sumX(N, M, K));``    ``}``}`

## Python3

 `# Python3 program to calculate the ``# terms of summing of sum series``  ` `MOD ``=` `1000000007``  ` `# Function to calculate``# twice of sum of first N natural numbers``def` `Sum``(N):``     ` `    ``val ``=` `N ``*` `(N ``+` `1``)``  ` `    ``# taking modulo 10 ^ 9 + 7``    ``val ``=` `val ``%` `MOD``  ` `    ``return` `val``  ` `# Function to calculate the``# terms of summing of sum series``def` `sumX(N, M, K):``     ` `    ``for` `i ``in` `range``(M):``        ``N ``=` `int``(``Sum``(K ``+` `N))``         ` `    ``N ``=` `N ``%` `MOD``    ``return` `N``  ` `if` `__name__ ``=``=` `"__main__"``:``     ` `    ``N, M, K ``=` `1``, ``2``, ``3``    ``print``(sumX(N, M, K))` `# This code is contributed by Rituraj Jain`

## C#

 `// C# program to calculate the``// terms of summing of sum series` `using` `System;``class` `GFG {` `    ``static` `int` `MOD = 1000000007;` `    ``// Function to calculate``    ``// twice of sum of first N natural numbers``    ``static` `long` `sum(``long` `N)``    ``{``        ``long` `val = N * (N + 1);` `        ``// taking modulo 10 ^ 9 + 7``        ``val = val % MOD;` `        ``return` `val;``    ``}` `    ``// Function to calculate the``    ``// terms of summing of sum series``    ``static` `int` `sumX(``int` `N, ``int` `M, ``int` `K)``    ``{``        ``for` `(``int` `i = 0; i < M; i++) {``            ``N = (``int``)sum(K + N);``        ``}``        ``N = N % MOD;``        ``return` `N;``    ``}` `    ``// Driver code``    ``public` `static` `void` `Main()``    ``{``        ``int` `N = 1, M = 2, K = 3;``        ``Console.WriteLine(sumX(N, M, K));``    ``}``}` `// This code is contributed by anuj_67..`

## PHP

 ``

## Javascript

 ``

Output:

`552`

Time Complexity: O(M)

Auxiliary Space: O(1), since no extra space has been taken.

My Personal Notes arrow_drop_up