Uva--10177 (数学,公式推导)

2014-06-10 15:56:02

题意&思路:分别计算2、3、4维grie / cube / hypercube 中Square、Rectangle(3、4中对应的图形和类推)的个数。

首先,可以知道总数为:(n * (n + 1) / 2) ^ k,k为维度,因为某个图形(可能多维)在任何一条坐标轴上的投影长度范围是【1,n】,长度为1的有n段,2的有n/2段。。。。n的有1段,所以总共有(1+2+3。。+n)=n× (n+1)/2段,也就是说每条坐标轴上的投影都有这么多的可能,所以总共有(n×(n+1)/2)^k中可能,即为总数。

其次:计算Square个数,二维的就是1^2+2^2+3^2+.....+n^2,三维:1^3+2^3+3^3+...+n^3,四维同理,因为题目要求效率,所以必然要用公式来求!

利用次方差公式可以求得:

(2维度)
n^3-(n-1)^3=1*[n^2+(n-1)^2+n(n-1)] 
=n^2+(n-1)^2+n^2-n
=2*n^2+(n-1)^2-n

2^3-1^3=2*2^2+1^2-2
3^3-2^3=2*3^2+2^2-3
4^3-3^3=2*4^2+3^2-4
......
n^3-(n-1)^3=2*n^2+(n-1)^2-n

各等式全相加
n^3-1^3=2*(2^2+3^2+...+n^2)+[1^2+2^2+...+(n-1)^2]-(2+3+4+...+n)

n^3-1=2*(1^2+2^2+3^2+...+n^2)-2+[1^2+2^2+...+(n-1)^2+n^2]-n^2-(2+3+4+...+n)

n^3-1=3*(1^2+2^2+3^2+...+n^2)-2-n^2-(1+2+3+...+n)+1

n^3-1=3(1^2+2^2+...+n^2)-1-n^2-n(n+1)/2

3(1^2+2^2+...+n^2)=n^3+n^2+n(n+1)/2=(n/2)(2n^2+2n+n+1)
=(n/2)(n+1)(2n+1)

1^2+2^2+3^2+...+n^2=n(n+1)(2n+1)/6

(3维度)
(n+1)^4-n^4=[(n+1)^2+n^2][(n+1)^2-n^2] 
=(2n^2+2n+1)(2n+1)
=4n^3+6n^2+4n+1
2^4-1^4=4*1^3+6*1^2+4*1+1
3^4-2^4=4*2^3+6*2^2+4*2+1
4^4-3^4=4*3^3+6*3^2+4*3+1
......
(n+1)^4-n^4=4*n^3+6*n^2+4*n+1
各式相加有
(n+1)^4-1=4*(1^3+2^3+3^3...+n^3)+6*(1^2+2^2+...+n^2)+4*(1+2+3+...+n)+n
4*(1^3+2^3+3^3+...+n^3)=(n+1)^4-1+6*[n(n+1)(2n+1)/6]+4*[(1+n)n/2]+n
=[n(n+1)]^2

1^3+2^3+...+n^3=[n(n+1)/2]^2

(4维度)
(n+1)^5-n^5=5n^4+10n^3+10n^2+5n+1
n^5-(n-1)^5=5(n-1)^4+10(n-1)^3+10(n-1)^2+5(n-1)+1
……
2^5-1^5=5*1^4+10*1^3+10*1^2+5*1+1
全加起来
(n+1)^5-1^5=5*(1^4+2^4+3^4+4^4+……+n^4)+10*(1^3+2^3+3^3+4^3+……+n^3)+10*(1^2+2^2+3^2+4^4+……+n^2)+5*(1+2+3+4+……+n)+n
因为1^3+2^3+3^3+4^3+……+n^3=[n(n+1)/2]^2
1^2+2^2+3^2+4^4+……+n^2=n(n+1)(2n+1)/6
1+2+3+4+……+n=n(n+1)/2
所以1^4+2^4+3^4+4^4+……+n^4
={[(n+1)^5-1^5]-10*[n(n+1)/2]^2-10*n(n+1)(2n+1)/6-5*n(n+1)/2-n}/5
=n(n+1)(2n+1)(3n^2+3n-1)/30

#include <cstdio>
#include <cmath>

int main(){
    long long n,m,sum,sq2,sq3,sq4;
    while(scanf("%lld",&n) == 1){
        m = n * (n + 1) / 2;
        sq2 = m * (2 * n + 1) / 3;
        sq3 = m * m;
        sq4 = sq2 * (3 * n * n + 3 * n - 1) / 5;
        printf("%lld %lld %lld %lld %lld %lld\n",sq2,(long long)pow(1.0 * m,2.0) - sq2,
                sq3,(long long)pow(1.0 * m,3.0) - sq3,sq4,(long long)pow(1.0 * m,4.0) - sq4);
    }
    return 0;
}

 



转载于:https://www.cnblogs.com/naturepengchen/articles/3780245.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值