试题C:货物摆放
观察题目给的例子可以知道,我们只需要求出n所有的因子即可,然后枚举出合适的L、W、H即可。因为给的n很大,所以我们利用一点数学知识来求得n所有的因子:
n = 2021041820210418
list = []
for i in range(1,int(n**0.5)+1):
if n%i == 0:
list.append(i)
list.append(n//i)
解释:当一个数能够开方时,即得到的两个因子相同,想要一个因子增大,另一个因子就必须减小,这样一来一个因子就会一直小于int(n**0.5)+1,故在1到int(n**0.5)+1里求一个因子,再用整除求出另一个因子即可,这样速度比一般方法要快些。代码如下:
n = 2021041820210418
list = []
for i in range(1,int(n**0.5)+1):
if n%i == 0:
list.append(i)
list.append(n//i)
count = 0
for i in list:
for j in list:
for k in list:
if i*j*k == n:
count+=1
print(count)