题解 | #尼科彻斯定理#

尼科彻斯定理

https://www.nowcoder.com/practice/dbace3a5b3c4480e86ee3277f3fe1e85

验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。
#分析:显然,条件等价于对任意绝对值大于1的整数M, 满足式子:
M**2  =  (M**2 - 1) + (M**2 + 1) (M**2为偶数),
M**2  =  (M**2 - 2) + (M**2 + 2) (M**2为奇数),
通俗来说,总能找到一对奇数(假如条件存在),使其成立上式子
本例验证均为正整数
while True:
    try:
        m,l= int(input()),[]
        if m==1:
            print(str(1))
        elif m>=2 and m%2!=0:  #奇数时,m*m也是奇数且刚好处于解集中间,解集是公差为2,中间项为m*m的等差数列
            for i in range(int(m*m-2*(m-1)/2),int(m*m+2*(m-1)/2+1),2): #注意转换成int
                    l.append(i)
            print("+".join(map(str,l))) #转换成字符串
        elif m>=2 and m%2==0: #偶数时,m*m也是偶数且刚好处于解集中间两数中间,解集是公差为2,中位数是m*m的等差数列
            for i in range(int(m*m-1-(m/2-1)*2),int(m*m+1+(m/2-1)*2+1),2): #注意转换成int
                    l.append(i)
            print("+".join(map(str,l))) #转换成字符串
    except:
        break

#HJ76##PYTHON##数据结构与算法教程#
全部评论

相关推荐

无敌虾孝子:喜欢爸爸还是喜欢妈妈
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务