由N*N的正方形中有几个正方形,有几个长方形 而想到的

在N边的正方形,正方体,超正方体(4维平面),内分别有多少个正方形(体,超体),长方形(体,超体);

对于N边的正方形,所含有依次从1~N边长的正方形为:N*N+(N-1)*(N-1)+…………2*2+1*1;

同理可知,正方体,超正方体,依次为从1到N的三次方和,四次方和。

对于N边的正方形,所含的矩形的数目为I*J(其中I的范围是1~N,J的范围也是1~N)之和,即为(i*(i+1)/2)*(i*(i+1)/2),所以其所含的长方形的数目为矩形的数目减去正方形的数目。

同理可知,正方体,超正方体。所含的长方形的和。




然后测试数据会很多,每个都从i=1开始算一遍会超时的。解决的办法是:先一边把所有能出到的数据都先算出来形成一张表,然后查表即可。

#include<stdio.h>  
#include<math.h>  
int main()  
{  
    long long i,n;  
    long long s2[101],s3[101],s4[101];  
    long long r2[101],r3[101],r4[101];  
    s2[0]=0;s3[0]=0;s4[0]=0;  
    for(i=1;i<=100;i++)  
    {  
        s2[i]=s2[i-1]+i*i;  
        s3[i]=s3[i-1]+i*i*i;  
        s4[i]=s4[i-1]+i*i*i*i;  
        r2[i]=(i*(i+1)/2)*(i*(i+1)/2)-s2[i];  
        r3[i]=(i*(i+1)/2)*(i*(i+1)/2)*(i*(i+1)/2)-s3[i];  
        r4[i]=(i*(i+1)/2)*(i*(i+1)/2)*(i*(i+1)/2)*(i*(i+1)/2)-s4[i];  
    }  
    while(scanf("%lld",&n)!=EOF)  
    {  
        printf("%lld %lld %lld %lld %lld %lld\n",s2[n],r2[n],s3[n],r3[n],s4[n],r4[n]);  
    }  
    return 0;  
}  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值