题解 | #杨辉三角的变形#

杨辉三角的变形

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')

全部评论

相关推荐

不愿透露姓名的神秘牛友
今天 18:02
点赞 评论 收藏
分享
自学java狠狠赚一...:骗你点star的,港卵公司,记得把star收回去
点赞 评论 收藏
分享
小浪_Coding:找硬件测试,也可兼顾软测欧, 简历还可以的 ,注意排版,项目写的有条理一点, 然后个人技能多加点, 润色好简历之后就开始沟通海投了,深圳,东莞这边做硬件相关的公司还不少, 医疗类,仪器类的都可以尝试
点赞 评论 收藏
分享
但听说转正率很低,我现在有在实习了,好纠结要不要去
熬夜脱发码农:转正率低归低,但是实习的经历你可以拿着,又不是说秋招不准备了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务