货物摆放(python)
题目描述
小蓝有一个超大的仓库,可以摆放很多货物。
现在,小蓝有 n 箱货物要摆放在仓库,每箱货物都是规则的正方体。小蓝规定了长、宽、高三个互相垂直的方向,每箱货物的边都必须严格平行于长、宽、高。
小蓝希望所有的货物最终摆成一个大的长方体。即在长、宽、高的方向上分别堆 L、W、H 的货物,满足n=L×W×H。
给定 n,请问有多少种堆放货物的方案满足要求。
例如,当 n=4 时,有以下 6 种方案:1×1×4、1×2×2、1×4×1、2×1×2、2×2×1、4×1×1.
请问,当n=2021041820210418 (注意有16 位数字)时,总共有多少种方案?
提示:建议使用计算机编程解决问题。
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
参考代码(超时):
n = 2021041820210418 |
合规代码:
import os |
解题思路:
第一个代码是普遍能想到的,即将n的因数找出来,并存到列表中,然后将列表一个一个遍历相乘看是否等于n,若等于则数量加一。但此方法超出了问题所规定的时限
第一个代码:本题是一个长方体的空间,且其边长的每一个单位就相当于一个物品,那么其边长必需是一个整数。也可以理解为是n的因数,就需要找出n的因数。因数一般是两个数字,而其较小的那个一般是小于等于原数开根号的,我们找到小的那个因数存入列表,再判断两个因数是否相同,如不同再将另一个存进列表。
当所有因数都找到后,利用三个for循环嵌套将列表中的数都遍历相乘,找到符合条件的
第二个代码是一个符合题目运行时间的,对于这个代码我也不是很懂,这个代码来自货物摆放 - 蓝桥云课 (lanqiao.cn)
这个网站题解python里面的第一位大神
有理解的可以发在评论区里帮我们学习一下这个代码的实现过程
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 大数据科技协会-zky!