平方和与和平方

平方和与和平方

问题描述:

前十个自然数的平方和是12+22+32+...+102=385 ,前十个自然数和的平方是(1+2+3+...+10)2=552=3025;

所得平方之和与和的平方的差值是3025-385=2640. 现给定一个n,叫你求出前n个自然数的平方和与和平方的差值.

输入:

一个整数n

输出:

         一个整数(前n个自然数的平方和与和平方的差值 )

例 如

输入:

10

输出:

2640

解法一:

首先也是最笨的解法,即直接对题目中的计算过程进行模拟求得,, ,最后直接输出result

C语言代码如下:

#include 
#include 
void main()
{
    __int64 result,sum1=0,sum2=0;	
    int n,i;	
    scanf("%d",&n);	
    for(i=1;i<=n;i++)		
    {		
        sum1+=pow(i,2);		
        sum2+=i;		
    }	
    sum2=pow(sum2,2);	
    result=sum2-sum1;
    printf("%I64d\n",result);
}


解法二:

首先我们先写下题目中的两个公式

平方和与和平方_第1张图片


最后的解为:

C语言代码如下:

#include 
void main()
{
	__int64 result=0;
	int n,i,j;
	scanf("%d",&n);
	for(i=1;i

解法三:

  此公式由数学归纳法证明



C语言代码如下:

#include 
#include 
void main()
{
	__int64 result,n,sum1,sum2;
	scanf("%I64d",&n);
	sum1=(n*(n+1)*(2*n+1))/6;
	sum2=pow((n*(n+1))/2,2);
	result=sum2-sum1;
	printf("%I64d\n",result);
}



你可能感兴趣的:(算法学习)