006. 和的平方与平方的和之间的差值(Sum square difference)

前十个自然数的平方的和为:

$$ 1^2+2^2+3^2+\cdots+10^2=385 $$
而前十个自然数和的平方为:
$$ (1+2+3+\cdots+10)^2=55^2=3025 $$
两者的差为\(3025-385=2640\),求前一百个自然数的和的平方与平方的和之间的差值。

分析:此题可以直接使用求和公式求解,则:

$$ S(n)=(\frac{1}{2}n(n+1))^2-\frac{1}{6}n(n+1)(2n+1)=\frac{1}{12}n(n-1)(n+1)(3n+2) $$

代入\(S(100)\)可以直接算出结果,代码如下:

def main(n=100):
    ans = n*(n-1)*(n+1)*(3*n+2)/12
    return int(ans)