题解 | #杨辉三角的变形#数学推导
杨辉三角的变形
https://www.nowcoder.com/practice/8ef655edf42d4e08b44be4d777edbf43
第一反应可能是根据杨辉三角的形式,自己构建第行。但其实是奇偶性的变化是有规律的,不需要把第行完整构建出来,只需写出前八行的前四个数字,就可以推导出每行的奇偶数初始位置的变化。
假设第行的第一个偶数的位置为。
首先看前两位的变化。因为每行的第一个数固定是1,那么第二个数就是前一行的第二个数+1,奇偶性交替变化。第二行开始才有第二个数,并且第二个数是1,奇数开头。所以当且仅当为奇数,第二个数是偶数。
因此得出第一个结论:时,,否则一定有。
接下来看前四位的变化。写出前八行的前四个数字的奇偶性,观察它们的变化:
可以看出,前四个数字的奇偶性只会在这四种组合里按顺序循环。
因此可以得出结论:
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