证明:第n行出现第一个偶数的位置满足2,3,2,4循环
杨辉三角的变形
https://www.nowcoder.com/practice/8ef655edf42d4e08b44be4d777edbf43
# 从第三行开始 首位偶数的位置表现为2,3,2,4,……并循环 # 证明: # 对第n行元素(从1起) 令左起第i位元素(从0起) 记为数列a[i][n] # a【0】均为1不考虑 考虑a[1]a[2]a[3] # 用归纳法易证通项: # a[1][n] = n-1 , n>=2 # a[2][n] = n*(n-1)/2, n>=3 # a[3][n] = (n-2)*(n-1)*(n+3)/6, n>=4 # 故n满足: # 1.n = 2*k+1,k>=0时,a[1]为偶数 # 2.当a[1]不为偶数时,n = 2*k,此时若a[2]=k*(2k-1)为偶数则k为偶数 # 即n=4*k时,a[2]为偶数 # 3.当a[1]a[2]均不为偶数时,转写(1)式: # a[1]为偶数,n = 2*k+1 也可以写作 n = 4*k+1 或 4*k+3(纯奇数列) # 又:n=4*k时,a[2]为偶数 # 故当a[1]a[2]均不为偶数时,有且仅有n=4*k+2 # 代入验证此时a[3]=2*k(4*k+1)(4*k+5)/3 # 可验证:k = 3*m, m>=0时,k%3 ==0 # k = 3*m+1, (4*k+5) = 12*m+6 % 3 ==0 # k = 3*m+2, (4*k+1) = 12*m+9 % 3 ==0 # 故k(4*k+1)(4*k+5)/3此时必为整数,故a[3]=(2)*k(4*k+1)(4*k+5)/3为偶数,得证 n = int(input()) if n <=2: print(-1) else: tmp = n % 4 if tmp == 1 or tmp == 3: print(2) elif tmp == 0: print(3) else: print(4) # # 第2层开始 12321起 每层0-3位元素必有至少一个偶数 # # 只计算前4列 # n = int(input()) # # 表示层数 # if n < 4: # if n <= 2: # print(-1) # if n == 3: # print(1) # else: # # n = 4 开始 考虑a3 # a1 = n - 1 # a2 = (n-1) * (n) / 2 # a3 = 7 # if n > 4: # # 第5层开始考虑a3累加 # for i in range(4 + 1, n+1): # a3 += (i-2) + (i-2)*(i-1)/2 # # 上一层的a1 a2 # # print(a1) # # print(a2) # # print(a3) # if a1 % 2 == 0: # print(2) # elif a2 % 2 == 0: # print(3) # elif a3 % 2 == 0: # print(4) # n = int(input()) # # 表示层数 # tower = [[1]] # for i in range(n-1): # tower.append([]) # # 创建n层塔 # for i in range(1, n): # # 开始填充 # for j in range(i+1): # # 只用输出一半 # tmp_l = 0 # # 左位 # tmp_m = 0 # # 中位 # tmp_r = 0 # # 右位 # # 填充第i层第j位 从0开始 # # print(f'i:{i} j:{j}') # tmp = 0 # try: # # print(1) # tmp_l = tower[i-1][j-2] # if j < 2: # tmp_l = 0 # except: # # print(2) # tmp_l = 0 # try: # tmp_m = tower[i-1][j-1] # if j < 1: # tmp_m = 0 # except: # tmp_m = 0 # try: # tmp_r = tower[i-1][j] # if j == i: # tmp_r = tmp_l # except: # tmp_r = 0 # if j == i: # tmp_r = tmp_l # tmp = tmp_l + tmp_m + tmp_r # # print(f'tmp_l :{tmp_l }') # # print(f'tmp_m :{tmp_m }') # # print(f'tmp_r :{tmp_r }') # # print(f'tmp : {tmp}') # tower[i].append(tmp) # for i in range(len(tower[n-1])): # tmp_0 = -1 # for j in range(len(tower[i])): # if tower[i][j] % 2 == 0: # tmp_0 = j+1 # break # print(tmp_0, end=' ') # print(tower[i]) # tmp_0 = -1 # for i in range(len(tower[n-1])): # if tower[n-1][i] % 2 == 0: # tmp_0 = i+1 # break # print(tmp_0)