导航菜单
首页 >  蓝桥杯真题python  > 蓝桥杯【第14届国赛】Python B组

蓝桥杯【第14届国赛】Python B组

倒数第二题交的时候多了一个print,只拿了国二,吐血

本题解仅代表个人观点,仅供参考,欢迎各位指正

A:弹珠堆放

【问题描述】

        小蓝有 20230610 颗磁力弹珠,他对金字塔形状尤其感兴趣,如下图所示:

        高度为 1 的金字塔需要 1 颗弹珠;

        高度为 2 的金字塔需要 4 颗弹珠;

        高度为 3 的金字塔需要 10 颗弹珠;

        高度为 4 的金字塔需要 20 颗弹珠。

        小蓝想要知道用他手里的弹珠可以摆出的最高的金字塔的高度是多少?

【解析及代码】

高度为 x 的金字塔需要 \sum_{i=1}^x \sum_{j=1}^i i 颗弹珠

利用等差数列的求和公式和平方差公式可简化为 \frac{x(x+1)(x+2)}{6},暴力枚举判断即可

答案:494

target = 20230610for i in range(1, target):y = (i * (i + 1) * (i + 2)) / 6if round(y) > target: break# 答案: 494print(i, y)

B:划分

【问题描述】

        给定 40 个数,请将其任意划分成两组,每组至少一个元素。每组的权值为 组内所有元素的和。划分的权值为两组权值的乘积。请问对于以下 40 个数,划分的权值最大为多少。

        5160 9191 6410 4657 7492 1531 8854 1253 4520 9231 1266 4801 3484 4323 5070 1789 2744 5959 9426 4433 4404 5291 2470 8533 7608 2935 8922 5273 8364 8819 7374 8077 5336 8495 5602 6553 3548 5267 9150 3309

        在试题包中有一个名为 nums.txt 的文

相关推荐: