标题:设计一个算法,计算出返回0至n之间的所有奇数平方和
只看楼主
一颗红豆
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-1-5
结帖率:0
已结贴  问题点数:20 回复次数:7 
设计一个算法,计算出返回0至n之间的所有奇数平方和
设计一个算法,计算出返回0至n之间的所有奇数平方和
请分别用自然语言、程序框图和程序语言描述
搜索更多相关主题的帖子: 设计 计算 返回 奇数 平方 
2018-01-05 14:25
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:705
专家分:2043
注 册:2010-11-11
得分:7 
老师,您好。自己的事情要自己做哈。
2018-01-05 14:27
一颗红豆
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-1-5
得分:0 
回复 2楼 八画小子
我不是老师😭
2018-01-05 14:28
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:7 
是这样吗
1*1 + 3*3 + 5*5 + ...
2018-01-05 14:57
一颗红豆
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-1-5
得分:0 
回复 4楼 吹水佬
是的
2018-01-05 15:01
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用一颗红豆在2018-1-5 15:01:52的发言:

是的

简单,一个循环,i从1开始,步进+2,累计 i*i
2018-01-05 15:28
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:7 
看来需要的是这个吧~

程序代码:
#include<stdio.h>

#define SQU_SUM(n) (n*(n+1)*(2*n+1)/6)

int main( void ) 
{
    unsigned n=0;
    unsigned m=0;
    
    if (scanf("%u",&n)!=1)
        return -1;
        
    m=n-(n&1);
   printf("%u",(SQU_SUM(m)-m*(m+1)/2)/2+n*n*(n&1));
        
    return 0;
}

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-01-05 19:05
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
简单讲解一下~

知道平方和公式是n*(n+1)*(2*n+1)/6,然后把它拆分成奇数平方和和偶数平方和,当n为偶数时,有m=n/2
(m+1)^2-1^2+(m+2)^2-2^2+(m+3)^2-3^2+……+n^2-m^2
再用平方差公式有

(m+2)*m+(m+4)*m+(m+6)*m+……+(m+n)*m

把m提取出来然后替换成n得

n*(n+1)/2

这样就知道当n为偶数时偶数和比奇数和多了n*(n+1)/2
这样就可以求奇数和的解了,同样当n为奇数时把它减1再加上n*n就可以了~


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-01-05 19:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-483995-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019792 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved