自然数平方和与立方和问题

1.公式总览:

    ①连续自然数的平方和  a[i]=i^2,S(n)=n*(n+1)(n*2+1)/6;

    ②连续自然数的立方和  a[i]=i^3,S(n)=(n*(n+1)/2)^2;

    ③连续偶数的平方和  a[i]=(2*i)^2,S(n)=n*(n+1)*(n*2+1)*2/3;

    ④连续奇数的平方和  a[i]=(2*i-1)^2,S(n)=n*(n*2-1)*(n*2+1)/3;

    ⑤连续偶数的立方和  a[i]=(2*i)^3,S(n)=2*n^2*(n+1)^2;

    ⑥连续奇数的立方和  a[i]=(2*i-1)^3,S(n)=n^2*(2*n^2-1);

二、公式证明:

    用Sn代表从1开始的连续自然数的n次方的和。

   ①http://www.pep.com.cn/gzsxb/xszx/jtzd/201009/t20100928_916091.htm

   ②用①证明方法里的第四种方法可证。

       这里就不再单独给出证明。

       ①证明方法里的第四种方法,还何以求出连续自然数的4次方、5次方等等的和。

   ③a[i]=(2*i)^2=4*i^2;

        s=4*S2

          =n*(n+1)*(n*2+1)*2/3;

   ④a[i]=(2*i-1)^2=4*i^2-4*i+1

        s=4*S2-4*S1+n

          =(n)=n*(n*2-1)*(n*2+1)/3;

   ⑤a[i]=(2*i)^3=8*i^3;

       s=8*s3

         =2*n^2*(n+1)^2;

   ⑥a[i]=(2*i-1)^3=8*i^3-12*i^2+6*i-1;

       s=8*S3-12S2+6S1-n

         =n^2*(2*n^2-1);

以上平方和与立方和的公式及推导证明旨在给大家一个启发,能够举一反三,在遇到求n次方的和的时候能有法可循。实际上,只要记住S1、S2、S3的求和公式,其他的公式再掌握推导方法后,都是很快就可以算出来的。真正重要需要记住的也只是这三个公式而已。

例题链接:hdoj2007 

要注意避免计算过程中超出long long的范围。

#include<cstdio>
#include<algorithm>
using namespace std;

long long m,n,x,y;
int a[100];

void init()
{
  freopen("1.in","r",stdin);
  freopen("1.out","w",stdout);
}

void work()
{
  long long i,j,k1,k2;
   while(scanf("%I64d%I64d",&m,&n)==2)
     {
       if(m>n)swap(m,n);

       k1=(m+1)/2-1,k2=n/2;
       x=(k2-k1)*(2*(k2*k2+k2*k1+k1*k1)+3*k1+3*k2+1)*2/3;
       
       k1=m/2,k2=(n+1)/2;
       y=(k2-k1)*(k2+k1)*(2*k1*k1+2*k2*k2-1);
       printf("%I64d %I64d\n",x,y);
     }
}

int main()
{
  init();
  work();
  return 0;
}


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值