题解 | 尼科彻斯定理
# 解析法。除了动态规划之外的第2种方法。本方法重心在数学解析,不在编码。
# 先进行数学计算,再编码输出。
# 任何一个整数m的立方都可以写成m个连续奇数之和。
# 设连续奇数首位为a,作为公差为2的等差数列,于是末位b=a+2(m-1)
# 翻译为恒等式:m*m*m = [a+a+2(m-1)]*m/2 ,右边为等差数列求和。
# 求解得a=m*m-m+1, 末尾b=m*m+m-1
# 已知首尾项、公差,可以直接输出拆分结果
while True:
try:
m = int(input())
start = m*m-m+1
end = m*m+m-1
result = [str(i) for i in range(start,end+1,2)] # 取出等差数列所有的项。用str()将数转换为符号用于拼接
print("+".join(result))
except:
break
查看2道真题和解析
美团成长空间 2667人发布