4252: 杨辉三角
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:1
解决:1
题目描述
杨辉三角形 ,是二项式系数在三角形中的一种几何排列。中国南宋数学家杨辉在 1261 年所著的 《详解九章算法》—书有明确记载。欧洲数学家帕斯卡在 1654 年发现这一规律 ,所以又叫做帕斯卡三角形。其定义为其顶端(第 1行)是 1;第 2 行是两个 1;第 3 行是'1,2,1',中间的”2”是其上方相邻的两个数字的和;依次类推 ,产生如图所示的杨辉三角形。
对于任意输入的3~15之间的正整数n,请编程输出前n行数字、以及由其组成的杨辉三角形。
函数提示∶print('{∶<3}'.format(10))能够以3个字符宽度左对齐的方式显示数字10。
输入
一个正整数n(3≤n≤15)
输出
由两部分组成。
第一部分输出由n行数字组成的列表;
第二部分输出n行数字组成的杨辉三角形。具体输出格式参考如下样例。
样例输入 复制
6
样例输出 复制
[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
提示
n=int(input())
a=[[0]*n for _ in range(n)] #初始化所有数为0
for i in range(n): #初始化第1列和对角线为1
a[i][0]=a[i][i]=1
for i in range(2,n): #从第3行第2列开始填充数值
for j in range(1,i):
a[i][j]=a[i-1][j]+a[i-1][j-1]
for i in range(n): #删除数值依然为0的元素
for j in range(n-1,-1,-1):
if (a[i][j]==0):
a[i].pop(j)
for r in a:
print(r)
m=1
for r in a:
for j in range(n-m):
#引号里是4个空格
print('{:<4}'.format(' '),end='')
for j in a[m-1]:
print('{:<4}'.format(j),end='')
#引号里是4个空格
print('{:<4}'.format(' '),end='')
print()
m+=1