Open in App
Not now

# Summing the sum series

• Last Updated : 27 Aug, 2022

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
Related Articles