3.貨物の配置

3.商品の配置
この質問の合計スコア:10点
[問題の説明]
小欖には、たくさんの商品を保管できる特大の倉庫があります。

現在、Xiaolanには倉庫に配置される商品の箱がn個あり、商品の各箱は通常の立方体です。Xiaolanは、長さ、幅、高さの3つの相互に垂直な方向を規定しており、商品の各ボックスの側面は、長さ、幅、高さに対して厳密に平行でなければなりません。

リトルブルーは、すべての商品が大きな立方体になることを望んでいます。つまり、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=int(input())
s=set()
for i in range(1,int(pow(n,1/2))+1):
    if(n%i==0):
        s.add(i)
        s.add(n//i)
ans=0
for i in s:
    for j in s:
        for k in s:
            if i*j*k==n:
                ans+=1
print(ans)

回答:2430

注:因子の最適化を求めてください。

#优化前
s=set()
for i in range(1,n+1):
    if(n%i==0):
        s.add(i)
#优化后
s=set()
for i in range(1,int(pow(n,1/2))+1):
    if(n%i==0):
        s.add(i)
        s.add(n//i)
#取1到根号n,相当于是把乘法的另一边就没遍历了,而是通过n//i直接求出来放入了。

おすすめ

転載: blog.csdn.net/Dai_sir_man/article/details/123285021