求解思路:
本题主要是找到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了,毕竟这是一道填空题。
对大家有用的话请点个赞吧!