问题描述:
下面的图形是著名的杨辉三角形:
如果我们按从上到下、从左到右的顺序把所有数排成一列,可以得到如下数列:1, 1, 1, 1, 2, 1, 1, 3, 3, 1, 1, 4, 6, 4, 1, …
给定一个正整数 N,请你输出数列中第一次出现 N 是在第几个数?
【输入格式】
输入一个整数 N。
【输出格式】
输出一个整数代表答案。
【样例输入】
6
【样例输出】
13
【评测用例规模与约定】
对于 20% 的评测用例,1 ≤ N ≤ 10;
对于所有评测用例,1 ≤ N ≤ 1000000000。
错误代码如下:
n = int(input())
m= 2 * n#保证数字有输出结果,如5的输出为17
list2 = [i for i in range(m * m)]#一个含有n的平方个数据的数组
k = 0
list1 = [[0] * m for i in range(m)]#m*m型初值为0的二维数组
# 求杨辉三角----------------
for i in range(m):
for j in range(m):
if j == 0 and j==i:
list1[i][j] = 1
else:
list1[i][j] = list1[i - 1][j - 1] + list1[i - 1][j]
# -------------------------------
if list1[i][j] != 0:#去除初值为0的
list2[k] = list1[i][j]#将二维化为一维
k = k + 1#一维数组的下标
print(list2.index(n) + 1)
运行结果图: