题解 | #杨辉三角的变形#
杨辉三角的变形
https://www.nowcoder.com/practice/8ef655edf42d4e08b44be4d777edbf43
# def value(i, j): # if i == 1 or i == 2 or j == 1 or j == 2*i -1: # return 1 # else: # if j == 2: # return 1 + value(i-1, 2) # if j == 2*(i-1): # return value(i-1, 2*i-4) + 1 # else: # return value(i-1, j-2) + value(i-1, j-1) + value(i-1, j) # i = int(input()) # j = range(1, 2*i) # a = -1 # for num in j: # if int(value(i, num)) % 2 == 0: # a = num # break # print(a) # 上面的超时 # 由数据结构可以得知,a[i][2] = 1 + a[i-1][2] # a[i][3] = 1 + a[i-1][2] + a[i-1][3] # a[i][4] = a[i-1][2] + a[i-1][3] + a[i-1][4] # 偶 + 偶 + 奇 = 奇 # 偶 + 奇 + 奇 = 偶 # 偶 + 偶 + 偶 = 偶 # 奇 + 奇 + 奇 = 奇 # 从第二行开始,第二位先是奇数,然后+1变成偶数,再然后+1变成奇数,所以,当行数为奇数时,此题输出为2。 # 若行数为偶数时:首先a[3][3]是个奇数,则a[4][3]= 奇 + 偶 + 奇 = 偶 # a[5][3] = 奇 + 奇 + 偶 = 偶,(但此时第一个偶数已经是a[5][2]), # a[6][3] = 奇 + 偶 + 偶 = 奇, # a[7][3] = 奇 + 奇 + 奇 = 奇。 # 所以,第三位是偶偶奇奇的循环。 # 同理,a[i][4] = a[i-1][2] + a[i-1][3] + a[i-1][4], # a[i-1][2] 和 a[i-1][3] 这两个元素的奇偶性随着i变化的规律我们已经知道,而且知道a[3][4],所以后面a[i][4]的规律也能和a[i][3]一样,用数学给归纳法做出来。事实上,这也是递归的思想。 n = int(input()) if n <= 2: print('-1') else: if n % 2 == 1: print('2') elif (n - 2) % 4 == 2: print('3') elif (n - 2) % 4 == 0: print('4')