蓝桥杯之杨辉三角,python实现

Nancy ·
更新时间:2024-09-20
· 628 次阅读

题目

问题描述
杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。

它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。

下面给出了杨辉三角形的前4行:

1

1 1

1 2 1

1 3 3 1

给出n,输出它的前n行。

输入格式
输入包含一个数n。

输出格式
输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。
样例输入
4
样例输出
1
1 1
1 2 1
1 3 3 1
数据规模与约定
1 <= n <= 34。

代码 import math n = input() n = int(n)-1 j = 0 def C(n,r): c = n-r n = math.factorial(n) r = math.factorial(r) c = math.factorial(c) num = n/(r*c) return int(num) for r in range(n+1): if r ==0: print(1,end='') print('\n',end='') continue else: while True: print(C(r, j),end=' ') j+=1 if j>r: j=0 print('\n',end='') break ## 分析 我们利用二项式的原理,代码中 `n = int(n)-1`就是利用了(a+b)^i的系数展开就为i+1上面的数值这个规律,所以要在最大的底数上减1。其实这样写代码是为了方便理解,第二次range函数又把那个1加回去了,是因为range函数取不到尾数,但是我们始终要知道,这个底数是要在行数的基础上减一的。 math中的factorial()函数是用来计算阶层的,这样我们就没必要再写一个递归去实现阶层的运算了。 `print("\n")`后面之所以还要加一个`end=''`是因为如果不加,那么一个print("\n")在循环里面,想大于打印了两个换行符。这样是不符合题意的。 j就是底数,底数从0一直增到第n-1。
作者:雕沙



杨辉 蓝桥杯 杨辉三角 Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号