自分用メモ

プログラミングとかのメモを書きたいです

競プロ典型 90 問:085 - Multiplication 085(★4)

問題

atcoder.jp

挑戦結果

  • 挑戦日:2021/11/03
  • 結果:解けた
  • 時間:30分

考えたこと

  • 約数を列挙して、permutationで組み合わせを全パターン列挙。やってみたけどTLEだった。
  • ライブラリ化していた約数列挙のアルゴリズムのような感じで、a,bを決めてしまい、cは自動的に決まるような形ができそうだと思った。

公式解説

https://twitter.com/e869120/status/1412541885160189952/photo/2

解説を読んだふりかえり

  • 解説が自分が考えたり、失敗した内容をだいたい盛り込んでいた。
  • 自分は約数を求めながらループを回したけど、実装例の用にやると約数を列挙してから求めることもできるのか。次はそっちで解いてみたい。

ソース

from itertools import permutations
K = int(input())

ansset = set()
a = 1
while a * a * a <= K:
    b = a
    while K % a == 0 and a * b * b <= K:
        if K % (a * b) == 0:
            c = K // (a * b)
            if a <= b <= c:
                ansset.add((a,b,c))
        b += 1
    a += 1

print(len(ansset))