华为笔试——杨辉三角的变形

描述

以上三角形的数阵,第一行只有一个数1,以下每行的每个数,是恰好是它上面的数、左上角数和右上角的数,3个数之和(如果不存在某个数,认为该数就是0)。

求第n行第一个偶数出现的位置。如果没有偶数,则输出-1。例如输入3,则输出2,输入4则输出3,输入2则输出-1。

数据范围: 1≤𝑛≤109 1≤n≤109 

输入描述:

输入一个int整数

输出描述:

输出返回的int值

示例1

输入:

4

输出:

3

注释掉的部分是构造类似的三角形,但是当n变大后,运行会超时,显然不能这么做,要寻找规律化简,最后发现当n=1或2时,没有偶数,返回-1,当n时其他奇数时,返回2,当n是4的倍数时,返回3,当n是其他数,也就是余4得2时,返回4。

n=int(input())


# def create(n):
#     linelist=[]
#     for i in range(n):
#         if i==0:
#             linelist.append([1])
#         elif i==1:
#             linelist.append([1,1,1])
#         elif i==2:
#             linelist.append([1,2,3,2,1])
#         else:
#             nowline=[]
#             nowline.append(1)
#             for j in range(1,n*2):
#                 if j==1:
#                     nowline.append(sum(linelist[i-1][:2]))
#                 elif j<len(linelist[i-1])-1:
#                     nowline.append(sum(linelist[i-1][j-2:j+1]))
#                 elif j==len(linelist[i-1])-1:
#                     nowline.append(sum(linelist[i-1][j-2:]))
#                 elif j==len(linelist[i-1]):
#                     nowline.append(sum(linelist[i-1][-2:]))
#             nowline.append(1)
#             linelist.append(nowline)
#     return linelist

if n==1 or n==2:
    print(-1)
elif n%2==1:
    print(2)
elif n%4==0:
    print(3)
else:
    print(4)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值