题解 | #尼科彻斯定理#
尼科彻斯定理
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##数据结构与算法教程#