第十二届蓝桥杯大赛软件赛省赛 Python 大学 A 组——试题 G: 杨辉三角形

【问题描述】

  下面的图形是著名的杨辉三角形:
第十二届蓝桥杯大赛软件赛省赛 Python 大学 A 组——试题 G: 杨辉三角形_第1张图片
  如果我们按从上到下、从左到右的顺序把所有数排成一列,可以得到如下数列: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 = eval(input())

def fun(N):   # 杨辉三角生成函数
    result = []
    if N == 1:
        result.append([1])
    elif N == 2:
        result.append([1])
        result.append([1,1])
    else:
        result.append([1])
        result.append([1,1])
        for i in range(3, N+1):
            temps = []             # 用来存放第i行的所有数
            temps.append(1)        # 每行第一个数是1
            for j in range(i-2):   # 生成第i行第2个数 到 倒数第2个数
                temp = result[i-2][j] + result[i-2][j+1]
                temps.append(temp)
            temps.append(1)        # 每行倒数第一个数是1
            result.append(temps)   # 将第i行的所有数添加到列表

    return result

triangles = fun(2 * n)
temp = []
for line in triangles:   # 将杨辉三角的每一行依次拼接成一个列表
    temp += line

print(temp.index(n) + 1)

【测试结果】
第十二届蓝桥杯大赛软件赛省赛 Python 大学 A 组——试题 G: 杨辉三角形_第2张图片
第十二届蓝桥杯大赛软件赛省赛 Python 大学 A 组——试题 G: 杨辉三角形_第3张图片
第十二届蓝桥杯大赛软件赛省赛 Python 大学 A 组——试题 G: 杨辉三角形_第4张图片
第十二届蓝桥杯大赛软件赛省赛 Python 大学 A 组——试题 G: 杨辉三角形_第5张图片

你可能感兴趣的:(蓝桥杯竞赛题解,python,经验分享,其他)