题解 | #杨辉三角的变形#数学推导

杨辉三角的变形

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

第一反应可能是根据杨辉三角的形式,自己构建第n行。但其实是奇偶性的变化是有规律的,不需要把第n行完整构建出来,只需写出前八行的前四个数字,就可以推导出每行的奇偶数初始位置的变化。

假设第n行的第一个偶数的位置为f(n)

首先看前两位的变化。因为每行的第一个数固定是1,那么第二个数就是前一行的第二个数+1,奇偶性交替变化。第二行开始才有第二个数,并且第二个数是1,奇数开头。所以当且仅当n为奇数,第二个数是偶数。

因此得出第一个结论:n \ge 2 且 n\%2=1时,f(n)=2,否则一定有f(n)>2

接下来看前四位的变化。写出前八行的前四个数字的奇偶性,观察它们的变化:

可以看出,前四个数字的奇偶性只会在这四种组合里按顺序循环。

因此可以得出结论:

f(n)=\left\{\begin{aligned}-1  &      &n\leq 2 \\2  &      &n\%2=1 \\
3 &      &n\%4=0 \\
4 &      &其他
\end{aligned}
\right.

def firsteven(n):
    #n:int
    if n<=2:
        return -1
    #规律:第一个数字固定是1,第二个数字是奇偶交替,且奇数行的第二个一定是偶数(除了1)
    elif n%2==1:
        return 2
    #规律:整4行的第三个一定是偶数,并且前两个都是奇数(1,奇)
    elif n%4==0:
        return 3
    #规律:非4倍数的偶数行第四个是奇数,可以从n=4往下推,推每行的前4个数即可
    else:
        return 4

while True:
    try:
        print(firsteven(int(input())))
    except:
        break
全部评论

相关推荐

不愿透露姓名的神秘牛友
09-30 19:49
牛客798932866号:已经出薪资了嘛
投递汇川技术等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务