Nos dan un número entero n y n-ésimo término en una serie como se expresa a continuación:
Tn = n2 - (n-1)2
Necesitamos encontrar S n mod (10 9 + 7), donde S n es la suma de todos los términos de la serie dada y,
Sn = T1 + T2 + T3 + T4 + ...... + Tn
Ejemplos:
Input : 229137999 Output : 218194447 Input : 344936985 Output : 788019571
Hagamos algunos cálculos, antes de escribir el programa. Tn se puede reducir para dar 2n-1. Veamos cómo:
Given, Tn = n2 - (n-1)2 Or, Tn = n2 - (1 + n2 - 2n) Or, Tn = n2 - 1 - n2 + 2n Or, Tn = 2n - 1.
Ahora, necesitamos encontrar ∑T n .
∑T n = ∑(2n – 1)
Podemos simplificar la fórmula anterior como,
∑(2n – 1) = 2*∑n – ∑1
O, ∑(2n – 1) = 2*∑n – n.
Donde, ∑n es la suma de los primeros n números naturales.
Conocemos la suma de n números naturales = n(n+1)/2.
Por lo tanto, poniendo este valor en la ecuación anterior obtendremos,
∑T norte = (2*( n )*(n+1)/2)-n = norte 2
Ahora el valor de n 2 puede ser muy grande. Entonces, en lugar de elevar directamente al cuadrado n y tomar mod del resultado. Usaremos la propiedad de la multiplicación modular para calcular cuadrados:
(a*b)%k = ((a%k)*(b%k))%k
A continuación se muestra la implementación de la idea anterior:
CPP
// CPP program to find sum of given // series. #include<bits/stdc++.h> using namespace std; #define mod 1000000007 // Function to find sum of series // with nth term as n^2 - (n-1)^2 long long findSum(long long n) { return ((n%mod)*(n%mod))%mod; } // Driver code int main() { long long n = 229137999; cout << findSum(n); return 0; }
Java
// Java program to find sum of given // series. public class FINDSUM { static long mod = 1000000007; public static long findSum(long n) { return ((n % mod) * (n % mod)) % mod; } public static void main(String[] args) { long n = 229137999; System.out.print (findSum(n)); } } // Contributed by _omg
Python 3
# Python program to find sum of given # series. mod = 1000000007 def findSum(n): return ((n % mod) * (n % mod)) % mod # main() n = 229137999 print (findSum(n)) # Contributed by _omg
C#
// C# program to find sum of given // series. using System; class GFG { static long mod = 1000000007; static long findSum(long n) { return ((n % mod) * (n % mod)) % mod; } public static void Main() { long n = 229137999; Console.Write (findSum(n)); } } // This code is contributed by _omg
PHP
<?php // PHP program to find // sum of givenseries. $mod = 1000000007; // Function to find sum of series // with nth term as n^2 - (n-1)^2 function findSum($n) { global $mod; return (($n % $mod) * ($n % $mod)) % $mod; } // Driver code $n = 229137999; echo(findSum($n)); // This code is contributed by Ajit. ?>
Javascript
<script> // Javascript program to find sum of given series. let mod = 1000000007; function findSum(n) { return ((n % mod) * (n % mod)) % mod + 1; } let n = 229137999; document.write(findSum(n)); </script>
Producción:
218194447
Publicación traducida automáticamente
Artículo escrito por Sahil Srivastava y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA