【蓝桥杯】货物摆放python——最容易理解的求法

求解思路:

本题主要是找到n的因子。

1、创建一个集合,用于存放n的因子。(选用集合是因为集合中不会存在重复的元素)

2、从1到n进行遍历求解n的因子(这里为了提高运算速度,可将n开根号)

3、满足 n%x == 0 的 x 即为 n 的因子,同时,n 除 x 所得的数也为 n 的因子。

4、用集合存放n的所有因子

5、长宽高依次从集合中选择因子。(这里体现为循环的嵌套)

6、用count记录所有满足条件的组合。

n = 2021041820210418
count = 0
font = set() #创建集合,储存n的因子,选用集合是因为集合中的元素不重复
for m in range(1,int(n**0.5)+1):
  if (n%m == 0):
    font.add(m) #能整除的因子存放在集合中
    font.add(n//m) #n除 整除的因子 商也为n的因子
for i in font: #在集合中选一个长
  for j in font: #在集合中选一个宽
    for k in font: #在集合中选一个高
      if(i*j*k == n):
        count += 1
print(count)

该方法在竞赛环境中会因运行时间过长而运行失败,不过大家竞赛的时候是允许使用电脑自带的编译器进行编译的。所以大家可以在电脑自带编译器中运行该代码得出结果,然后直接在考试环境中print 就OK了,毕竟这是一道填空题。

对大家有用的话请点个赞吧!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值