我们得到了一个整数n和第n个项,如下所示:
Tn = n2 - (n-1)2
我们需要找到S n mod(10 9 + 7),其中S n是给定级数的所有项的和,
Sn = T1 + T2 + T3 + T4 + ...... + Tn
例子:
Input : 229137999
Output : 218194447
Input : 344936985
Output : 788019571
在编写程序之前,让我们做一些计算。可以将T n减少为2n-1。让我们看看如何:
Given, Tn = n2 - (n-1)2
Or, Tn = n2 - (1 + n2 - 2n)
Or, Tn = n2 - 1 - n2 + 2n
Or, Tn = 2n - 1.
现在,我们需要找到∑T n 。
∑T n = ∑(2n – 1)
我们可以将上面的公式简化为:
∑(2n – 1)= 2 * ∑n – ∑1
或者,∑(2n – 1)= 2 * ∑n – n。
其中,∑n是前n个自然数的总和。
我们知道n个自然数的总和= n(n + 1)/ 2。
因此,将这个值放在上面的方程中,我们将得到,
∑T n =(2 *(n)*(n + 1)/ 2)-n = n 2
现在n 2的值可能非常大。因此,与其直接平方n并取结果的mod,不如直接对n求平方。我们将使用模块化乘法的属性来计算平方:
(a * b)%k =((a%k)*(b%k))%k
下面是上述想法的实现:
CPP
// CPP program to find sum of given
// series.
#include
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
Javascript
输出:
218194447
想要从精选的最佳视频中学习并解决问题,请查看有关从基础到高级C++的C++基础课程以及有关语言和STL的C++ STL课程。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。