你现在是python工程师【题目描述】注input输入函数的括号中不允许添加任何信息提示信息:杨辉三角就是一个用数排列起来的三角形如下图杨辉三角规则如下:1每行第一个数和最后一个数都为1其它每个数等于它左上方和右上方的两数之和;2第n行有n个数。注意:列指的是如图所标注的斜列。【编程实现】小刚对杨辉三角的特点和规律研究得很明白现要考察你对杨辉三角的熟悉程度首先告知你这是一个N行的杨辉三角然后又告知
杨辉三角的生成可以通过递推的方式实现,首先生成第一行和第二行,然后利用第i行的数值生成第i+1行。
根据题目要求,需要求出第X行第Y列对应的数和第X行所有数字之和。
具体实现如下:
# 获取杨辉三角的第X行第Y列对应的数
def get_number(row, col):
triangle = [[1], [1, 1]] # 初始化前两行
for i in range(2, row+1):
# 生成第i行
curr_row = [1] # 每行的第一个数为1
for j in range(1, i):
# 第i行的数等于它左上方和右上方的两数之和
curr_row.append(triangle[i-1][j-1] + triangle[i-1][j])
curr_row.append(1) # 每行的最后一个数为1
triangle.append(curr_row)
return triangle[row-1][col-1]
# 获取第X行所有数字之和
def get_sum(row):
triangle = [[1], [1, 1]] # 初始化前两行
for i in range(2, row+1):
# 生成第i行
curr_row = [1] # 每行的第一个数为1
for j in range(1, i):
# 第i行的数等于它左上方和右上方的两数之和
curr_row.append(triangle[i-1][j-1] + triangle[i-1][j])
curr_row.append(1) # 每行的最后一个数为1
triangle.append(curr_row)
return sum(triangle[row-1])
# 获取输入
N = int(input())
X, Y = map(int, input().split(','))
# 调用函数计算结果
number = get_number(X, Y)
row_sum = get_sum(X)
# 输出结果
print(f"{number},{row_sum}")
这样就可以得到题目要求的结果
原文地址: http://www.cveoy.top/t/topic/hSec 著作权归作者所有。请勿转载和采集!