非取巧找规律 完整获取杨辉三角变形详解
方法1:本人 python解
while True: try: n = int(input()) if n <= 2: print(-1) L0 = [] L1 = [] for i in range(n): if i == 0: L0.append(1) L1 = [] elif i == 1: L0 = [1] L1 = [1, 1, 1] else: L0 = list(L1) L1 = [] m = len(L0) + 2 for ii in range(m): if ii == 0: L1.append(L0[ii]) elif ii == 1: L1.append(L0[ii - 1] + L0[ii]) elif ii == (m-1): L1.append(1) elif ii == (m - 2)and((m-2)>2): L1.append(L0[-1] + L0[-2]) else: L1.append(L0[ii - 2] + L0[ii - 1] + L0[ii]) num = 0 for pos in range(len(L1)): if L1[pos] %2 ==0: num = pos +1 break if num == 0: print(-1) else: #print(L1) print(num) except: break
i 是 第i行。ii代表第ii列。
方法2:python
while True: try: n = int(input()) res = - 1 #初始化结果为-1 l = [[0]*(2*n+1) for _ in range(n)] #以n行的长度创建二维矩阵,每行开头插入2个0 l[0][2] = 1 #第一行起始值为1(因开头插入了两个0,所以第三位为1) for x in range(1,n): #构造完整的杨辉三角矩阵 for j in range(2,2*(x+2)-1): l[x][j] = l[x-1][j-2]+l[x-1][j-1]+l[x-1][j] for i in range(len(l[n-1][2:])): #遍历杨辉三角矩阵最后一行,去掉开始插入的两个0 if int(l[n-1][2:][i])%2 == 0: #如果发现偶数,输入下标,并把答案res置为!=-1的值 print(i+1) res = 0 break if res == -1: #如果前面没有找到偶数,那么res还是初始值,输出即可满足题意 print(-1) except: break
方法3:python 找规律
//杨辉三角规律 行号 第一个偶数在该行第几个
// 1 1 -1
// 1 1 1 2 -1
// 1 2 3 2 1 3 2
// 1 3 6 7 6 3 1 4 3
// 1 4 10 16 19 16 10 4 1 5 2
// 1 5 15 30 45 51 45 30 15 5 1 6 4
//
while True: try: n = int(raw_input()) ans = -1 if n <= 2: ans = -1 elif n % 2 == 1: ans = 2 elif n % 4 == 0: ans = 3 else: ans = 4 print ans except: break