Definida una función que calcula el doble de la suma de los primeros N números naturales como sum(N) . Su tarea es modificar la función a sumX(N, M, K) que calcula sum( K + sum( K + sum( K + …sum(K + N)…))) , continuando con M términos. Para N, M y K dados, calcule el valor de sumX(N, M, K) .
Nota: Dado que la respuesta puede ser muy grande, imprima la respuesta en módulo 10^9 + 7 .
Ejemplos:
Entrada: N = 1, M = 2, K = 3
Salida: 552
Para M = 2
sum(3 + sum(3 + 1)) = sum(3 + 20) = 552.
Entrada: N = 3, M =3 , K = 2
Salida: 1120422
Para M = 3
suma(2 + suma(2 + suma(2 + 3))) = suma(2 + suma(2 + 30)) = suma(2 + 1056) = 1120422.
Acercarse:
- Calcule el valor de sum(N) usando la fórmula N*(N + 1) .
- Ejecute un bucle M veces, cada vez que agregue K a la respuesta anterior y aplique sum(prev_ans + K) , módulo 10^9 + 7 cada vez.
- Imprime el valor de sumX(N, M, K) al final.
A continuación se muestra la implementación del enfoque anterior:
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 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
<?php // PHP program to calculate the // terms of summing of sum series // Function to calculate twice of // sum of first N natural numbers function sum($N) { $MOD = 1000000007; $val = $N * ($N + 1); $val = $val % $MOD; return $val; } // Function to calculate the terms // of summing of sum series function 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 numbers function sum(N) { let MOD = 1000000007; let val = N * (N + 1); val = val % MOD; return val; } // Function to calculate the terms // of summing of sum series function sumX(N, M, K) { let MOD = 1000000007; for (let i = 0; i < M; i++) { N = sum(K + N); } N = N % MOD; return N; } // Driver Code let N = 1; let M = 2; let K = 3; document.write (sumX(N, M, K)); // This code is contributed // by Sravan </script>
552
Complejidad de tiempo: O(M)
Espacio Auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por rachana soma y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA