证明:第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)

全部评论

相关推荐

03-26 22:55
门头沟学院 Java
烤冷面在迎接:河南byd,应该就是郑大了。不过24届计算机是特殊情况,那年除了九✌和强2,以及两三个关系够硬的双非,其他的都是炮灰,感觉是十几年来互联网行业最烂的一年,如果想了解最新的就业情况,得找现在的大四。
点赞 评论 收藏
分享
03-29 19:11
门头沟学院 Java
wyp_davis:是可以这样的,不过只要交钱就是假的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务