受这个启发:
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自己写了这个:因为不插入0占位,省内存,但if多了稍微慢些?
不过离超时或超内存远着呢
while 1:
try:
n = (int(input()))
l=['start']
l1=[1]
l2=[1,1,1]
l.append(l1)
l.append(l2)
def get_ln(i):
ln = [1]
last = l[i-1]
for ii in range(1,2*i-1):
if ii ==1:
t=last[0]+last[1]
if ii>1 and ii<=2*i-4:
t=last[ii]+last[ii-1]+last[ii-2]
if ii == 2*i-3:
t=last[ii-1]+last[ii-2]
if ii == 2*i-2:
t= 1
ln.append(t)
# i-2行已经没必要放在内存了,但为了l的index不变,让它变空
l[i-2]=None
return ln
# get yanghui
for i in range(3,n+1):
l.append(get_ln(i))
f = -1
l_n = l[n]
for e in l_n:
if e%2 == 0:
f=l_n.index(e)+1
break
print(f)
except:
break各类型占内存大小:(字节)
找规律(这样做其实跟编程关系不大了,成了数学题):
n>2时,第n行前3项为1, n-1, n(n-1)/2。第四项还没找到通式。看到第6行的输出应该是4,就直接蒙4,还真对了。
毕竟不是奥数题,可以多蒙答案。
敲一次print,比敲一堆print好:
while True:
try:
a,b = int(input()),0
if a%2 == 1:
b = 2
elif a%4 == 0:
b = 3
elif a < 3:
b = -1
else:
b = 4
print(b)
except:
break当成数学高考题来做了:
懒得算了,反正蒙对了



京公网安备 11010502036488号