平方和与和平方

来源:互联网 发布:2017院士 知乎 编辑:程序博客网 时间:2024/04/27 19:37

平方和与和平方

问题描述:

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

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

输入:

一个整数n

输出:

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

例 如

输入:

10

输出:

2640

解法一:

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

C语言代码如下:

#include <stdio.h>#include <math.h>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);}


解法二:

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



最后的解为:

C语言代码如下:

#include <stdio.h>void main(){__int64 result=0;int n,i,j;scanf("%d",&n);for(i=1;i<n;i++){result+=2*i*(((n-i)*(i+1+n))/2);}printf("%I64d\n",result);}

解法三:

  此公式由数学归纳法证明



C语言代码如下:

#include <stdio.h>#include <math.h>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);}



1 0
原创粉丝点击