解题思路:
    同1813题。数据量比较小,所以可以直接计算对应的组合数。


注意事项:
格式化输出比较麻烦,需要观察规律,第一个数前面有2个空格,外加对应的缩进,同时还要考虑数字与数字之间的间隔(数字格式是右对齐,总长6位)。


参考代码:

def calculate_it(n: int, k: int) -> int:
    # n != 0
    import math, functools
    if k == 0:
        return 1
    elif k == 1:
        return n
    else:
        return functools.reduce(lambda a, b: a *b, [i for i in range(n, n - k, -1)]) // \
               math.factorial(k)


n_0, res = int(input()), [[1]]
for i in range(1, n_0 + 1):
    res.append([calculate_it(i, j) for j in range(i + 1)])
for k in range(len(res)):
    print(' ' * (2 + 3 * (n_0 - k)), sep='', end='')
    for k_0 in range(len(res[k])):
        if k_0 == 0:
            print('1', sep='', end='')
        else:
            print("{0:>6d}".format(res[k][k_0]), sep='', end='')
    print()


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论