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.
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++
#include <iostream>
using namespace std;
# define MOD 1000000007
long sum( long N){
long val = N * (N+1);
val = val % MOD;
return val;
}
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;
}
int main()
{
int N = 1, M = 2, K = 3;
cout << sumX(N, M, K) << endl;
return 0;
}
|
Java
import java.io.*;
import java.util.*;
import java.lang.*;
class GFG {
static int MOD = 1000000007 ;
static long sum( long N)
{
long val = N * (N + 1 );
val = val % MOD;
return val;
}
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;
}
public static void main(String args[])
{
int N = 1 , M = 2 , K = 3 ;
System.out.println(sumX(N, M, K));
}
}
|
Python3
MOD = 1000000007
def Sum (N):
val = N * (N + 1 )
val = val % MOD
return val
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))
|
C#
using System;
class GFG {
static int MOD = 1000000007;
static long sum( long N)
{
long val = N * (N + 1);
val = val % MOD;
return val;
}
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;
}
public static void Main()
{
int N = 1, M = 2, K = 3;
Console.WriteLine(sumX(N, M, K));
}
}
|
PHP
<?php
function sum( $N )
{
$MOD = 1000000007;
$val = $N * ( $N + 1);
$val = $val % $MOD ;
return $val ;
}
function sumX( $N , $M , $K )
{
$MOD = 1000000007;
for ( $i = 0; $i < $M ; $i ++)
{
$N = sum( $K + $N );
}
$N = $N % $MOD ;
return $N ;
}
$N = 1;
$M = 2;
$K = 3;
echo (sumX( $N , $M , $K ));
?>
|
Javascript
<script>
function sum(N)
{
let MOD = 1000000007;
let val = N * (N + 1);
val = val % MOD;
return val;
}
function sumX(N, M, K)
{
let MOD = 1000000007;
for (let i = 0; i < M; i++)
{
N = sum(K + N);
}
N = N % MOD;
return N;
}
let N = 1;
let M = 2;
let K = 3;
document.write (sumX(N, M, K));
</script>
|
Time Complexity: O(M)
Auxiliary Space: O(1), since no extra space has been taken.
Share your thoughts in the comments
Please Login to comment...