備忘録

徒然なるままに。

競プロ典型:022 Cubic Cake

前回に引き続き☆の数が少ないモノを解いていく。

import math

l = list(map(int, input().split()))

gcd_num = math.gcd(math.gcd(l[0], l[1]), l[2])

ans = l[0] // gcd_num + l[1] // gcd_num + l[2] // gcd_num - 3

print(ans)

方策自体はすぐに思いついた。コードにあるように与えられた3つの数の最大公約数を求めればよい。
その後、ケーキを切り分ける回数を別に求めている。

ただコードを書くだけならこれで終わりなのだが競プロにおいてモジュールをインポートするのは速度的にどうなんだろうか?
と思って他の提出と比較したがコードはほとんど変わらず。速度も申し分ない様子。
強いて言うなら最後に切り分ける回数を求めるところで入力をすべて足してからgcd_numで割ればよかった。算数レベルの愚行を犯している。

ちなみにPython3.9以降だとわざわざ2つの数の組み合わせで最大公約数を求めなくてもよいらしい。3つ以上についても対応したらしいのでlisの要素をそのまま入れればよい。

math.gcd(*l)

AtCoderPython verは3.8で未対応。よって2つずつやる必要があった。