题解 | #尼科彻斯定理#

尼科彻斯定理

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

  1. 遍历求解(耗时过长,占用过多内存)
while True:
    try:
        m = int(input())
        m3 = pow(m,3)
        odd_set = [i for i in range(1,m3,2)]
        odd_num  = len(odd_set)
        for i in range(odd_num-m):
            odd_sub=odd_set[i:i+m]
            num = sum(odd_sub)
            if num == m3:
                  print("+".join(list(map(str,odd_sub))))
    except:
        break
        
            
  1. 利用数学公式求解
while True:
    try:
        m = int(input())
        m3 = pow(m,3)
        a = int((m3 - m*(m-1))/m)
        string=""
        for i in range(m):
            string+=str(a)
            string+='+'
            a+=2           
        print(string[:-1])
    except:
        break

去掉最后一个字符可以用 str[:-1]

全部评论

相关推荐

鬼迹人途:你去投一投尚游游戏,服务器一面,第一个图算法,做完了给你一个策略题,你给出方案他就提出低概率问题,答不上当场给你挂
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务