思路:
暴力求解(40分)
杨辉三角的第n行的各个数为二项式的二项式系数
最大项为中间的那两项or一项。
如果要查找的数比这一行的最大项还要大,则直接加上这一行数的个数,否则用列表存储这一行数,并且查看这个数在这一行的位置,并与前面做记录的个数和相加,得到最后的结果。
代码如下:
import math
n=int(input())
p=0
num=0
while True:
flag=math.comb(p, sum(divmod(p, 2)))
if n > flag:
num += p + 1
else:
ans=[]
for j in range(p+1):
ans.append(math.comb(p,j))
# print(*ans)
if n in ans:
num+= ans.index(n) + 1
break
else:
num+=len(ans)
p+=1
# print("\r运行中"+'.'*(p%10),end='')
print(num)
能运行,但是得不到满分,因为运行时间超过标准。求助有无能用Python写出符合题意得满分代码。