Summing the sum series

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.
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 <iostream>using namespace std;# define MOD 1000000007// Function to calculate // twice of sum of first N natural numberslong sum(long N){ long val = N * (N+1); val = val % MOD; return val;}// Function to calculate the // terms of summing of sum seriesint 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 Codeint 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 seriesimport 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 seriesusing 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
<?php// PHP program to calculate the // terms of summing of sum series// Function to calculate twice of // sum of first N natural numbersfunction sum($N){ $MOD = 1000000007; $val = $N * ($N + 1); $val = $val % $MOD; return $val;}// Function to calculate the terms // of summing of sum seriesfunction sumX($N, $M, $K){ $MOD = 1000000007; for ($i = 0; $i < $M; $i++) { $N = sum($K + $N); } $N = $N % $MOD; return $N;}// Driver Code$N = 1;$M = 2;$K = 3;echo (sumX($N, $M, $K)); // This code is contributed // by Shivi_Aggarwal?> |
Javascript
<script>// Javascript program to calculate the // terms of summing of sum series// Function to calculate twice of // sum of first N natural numbersfunction sum(N){ let MOD = 1000000007; let val = N * (N + 1); val = val % MOD; return val;}// Function to calculate the terms // of summing of sum seriesfunction sumX(N, M, K){ let MOD = 1000000007; for (let i = 0; i < M; i++) { N = sum(K + N); } N = N % MOD; return N;}// Driver Codelet N = 1;let M = 2;let K = 3;document.write (sumX(N, M, K)); // This code is contributed // by Sravan</script> |
552
Time Complexity: O(M)
Auxiliary Space: O(1), since no extra space has been taken.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!



