蓝桥杯 Python 杨辉三角形
第一次代码
算出整个三角形,运行超时,只有40分
n=int(input())
if n==1:
print(1)
exit(0)
f=0
a=[[1],[1,1]]
for i in range(2,n+3):
a.append([1])
for j in range(1,i):
a[i].append(a[i-1][j]+a[i-1][j-1])
if a[i][j]==n:
print(int((i+1)/2*i+j+1))
f=1
break
if f==1:break
if i>1:
a[i].append(1)
由于三角形是对称的,于是想到只算一半的三角形,但速度没有一点提高,非常诡异,测试数据很变态,看了文章的人很可爱,麻烦路过的大神留下宝贵思路💕
n=int(input())
if n==1:
print(1)
exit(0)
if n==2:
print(5)
exit(0)
f=0
a=[[1],[1,1]]
for i in range(2,n+3):
a.append([1])
k=i//2
for j in range(1,k):
a[i].append(a[i-1][j]+a[i-1][j-1])
if a[i][j]==n:
print(int((i+1)/2*i+j+1))
f=1
break
if f==1:break
if i%2==1: #偶数行
a[i].append(a[i-1][k]+a[i-1][k-1])
if a[i][k]==n:
print(int((i+1)/2*i+k+1))
f=1
break
else: #奇数行
a[i].append(2*a[i-1][k-1])
if a[i][k]==n:
print(int((i+1)/2*i+k+1))
f=1
break