题解 | #杨辉三角的变形#

杨辉三角的变形

http://www.nowcoder.com/practice/8ef655edf42d4e08b44be4d777edbf43

# 非找规律,非构建完整杨辉三角 直接构建杨辉三角,如果有一百万行,会时间超限制。只构建杨辉三角的前4个数会内存超限制。 所以采用递推出前4项的数列递推公式。 当n>=3时候: dp = [1,n-1,n*(n-1)/2,(n*(n+1)(2n+1)/6+n*(n+1)/2-2*n)/2] 其中: 第一项恒为1; 第二项是等差数列,直接用求和公式; 第三项为An = An-1 + n-1 + 1 (n和n-1是下标),用高中学的逐差法求An即可; 第四项同理。

完整代码:

def is_odd():
    for i in dp:
        if i%2 == 0:
            return dp.index(i)+1        
    return -1

n=int(input())
if n == 1:
    dp = [1]
elif n == 2:
    dp = [1,1,1]
elif n == 3:
    dp = [1, 2, 3, 2, 1]
else:
    dp = [1,n-1,n*(n-1)/2,(n*(n+1)*(2*n+1)/6+n*(n+1)/2-2*n)/2]
     
print(is_odd())
全部评论

相关推荐

点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-09 12:23
转人工😡
门口唉提是地铁杀:五次握手了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-11 13:34
offe从四面八方来:我真的没时间陪你闹了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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