题解 | 尼科彻斯定理
# 解析法。除了动态规划之外的第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