一开始的想法:将所有杨辉三角里的数放在一个数组里,用index索引到这个数打印出来它的顺序就ok了于是实现代码:
l1=[[1],[1,1]]
l=[]
for i in range(2,200):#i=2 第三行 1 2 1
l2=[1]
for j in range(i-1):#i=2 循环一次 i=3 循环两次
# print(i,j)
m=l1[i-1][j]+l1[i-1][j+1] #i=2 j=0 i=3 j=0 1
l2.append(m)
l2.append(1)
l1.append(l2)
for j in i:
l.append(j)
n=int(input())
print(l.index(n)+1)
但是只拿到40分,给的测试数字也不是很大,为什么就是找不到呢?后来想明白了,这些数字应该是在下面层的边上,所以数字很小但是并没有计算在这个数组里。所以本题不能用这个方法做。用二分法+分析来做。
根据组合数性质,只考虑前一半数。
从图中可以得出的结论:
①任意一个正整数N在杨辉三角里都会出现&#