描述:验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。
例如:
1^3=1
2^3=3+5
3^3=7+9+11
4^3=13+15+17+19
输入一个正整数m(m≤100),将m的立方写成m个连续奇数之和的形式输出。
数据范围:1\le m\le 100\1≤m≤100 
进阶:时间复杂度:O(m)\O(m) ,空间复杂度:O(1)\O(1) 
输入描述:输入一个int整数
输出描述:输出分解后的string
输入:6
输出:31+33+35+37+39+41
# 1 1-100加起来有5050个数字,从1开始直到第5050个奇数构成
# 2 1立方1数字,2立方2数字,3立方3数字,N立方N数字,100立方100数字
# 3 1开始,每次加2,则生成每个数字
# 4 外层循环 1-100,内层循环计数看外层i值,内层循环每次加2 
# 5 从这个思路下来,发现比较难写,但递归思路则是前一个list列表的最后一个值[-1]上*2(次数为:输入的值从0到n-1)
# 6 公式为:
# 7 f(1) = 1,f(2)=[f(1)[-1]+2,f(1)[-1]+2+2],f(3)=[f(2)[-1]+2,加3次],f(4)=f(3)[-1]+2,加4次 2*(i+1)

def exam(num):
    
    n = num
    if n == 1:
        return [1]
    # if n == 2:
    #     return [1+2,1+2+2]
    # 2实际上是1的return值[2][-1]的结果,[2]是list列表,[-1]是取最后一个值
    
    temp = [] 
    # 返回结果使用,每次需append对应输入值n的次数
    
    pre_end = int(exam(n-1)[-1])
    # 之前把pre_end写入到for循环里面,超级慢,用pre_end变量保存后,变得超级快了
    # 感觉是每次for循环时候都要取上一轮结果,而且这个结果还是更上一级取到的
    # 递归本身为N,for循环则也是N,则最终是: N*N 很慢
    # 实际上 pre_end在进入for循环时候,可以是个常量,就很快了,复杂度为 N
    # 试了下,输入100,输出也很快
    
    if n > 1:
        for i in range(n):
            # temp.append(int(exam(n-1)[-1])+(i+1)*2)
            temp.append(pre_end+(i+1)*2)
        return temp
    
num = int(input().strip())
# print('input: ',num)
# 6
res = exam(num=num)
# print(res)
# [31, 33, 35, 37, 39, 41]
print('+'.join(map(str,res)))
# 31+33+35+37+39+41

# 11
# 111+113+115+117+119+121+123+125+127+129+131
# 10
# 91+93+95+97+99+101+103+105+107+109