📌  相关文章
📜  Java程序查找第 n 项为 n^2 – (n-1)^2 的系列之和

📅  最后修改于: 2022-05-13 01:58:09.527000             🧑  作者: Mango

Java程序查找第 n 项为 n^2 – (n-1)^2 的系列之和

我们在一个系列中给出一个整数 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。我们将使用模乘的性质来计算平方:

(a*b)%k = ((a%k)*(b%k))%k

// 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
输出:
218194447

有关详细信息,请参阅完整的文章 Find sum of Series with n-th term as n^2 – (n-1)^2!