1 クラスソリューション: 2 デフ sumFourDivisors(自己、NUMS:' 一覧の[int] ') - > INT: 3 結果= 0 4 N = LEN(NUMS) 5 用 I における範囲(N): 6つの S = セット() 7 CUR = NUMS [i]は 8 用の J での範囲(1、INT(CUR ** 0.5)+ 1 ): 9 もし CUR%のJ == 0: 10 s.add(J) 11 s.add(CUR // j)が 12 であれば lenの(S)== 4 : 13 結果+ = 和(リスト(S)) 14 リターン結果
アルゴリズムのアイデア:数字について尋ねます。
このアイデアは、非常に簡単な質問には約数の数を計算することです。暴力は解決した場合でも、それがタイムアウトすることがあります。
除数は、その都度計算される別の分周器の除数を用いて計算することができます。この戦略は、時間複雑性O(SQRT(N))に還元することができます。