典型90【022 – Cubic Cake(★2)】をpython解説

Python

AtCoder の問題を解くために必要な実力を付けるために作られた「典型問題」を解いていく企画として、「典型90」があります。

今回は、その内、の22問目である「022 – Cubic Cake(★2)」を解説していきたいと思います。
なにか、間違っているところなどありましたら、@EitaSugiまで、ご指導ご鞭撻の程、よろしくお願い致します!

問題名 【022 – Cubic Cake(★2)】

022 – Cubic Cake(★2)

考察

立方体の条件について考えます。
立方体とは、縦、横、高さの長さがすべて等しい必要があります。

つまり言い換えると
すべての辺を同じ長さずつ切断したときにあまりが出ないようにしたい」のです。

よって、3つの辺の長さにおいて、あまりが出ないようにするには、3つの数の最小公倍数をとれば良いです。(※切る回数なので植木算のように、切る回数は辺の長さ//最小公倍数から-1になることに注意)

キーワード:最小公倍数

コード

from math import gcd
import sys
def LI(): return list(map(int,sys.stdin.readline().rstrip().split()))
def II(): return int(sys.stdin.readline())
def MI(): return map(int,sys.stdin.readline().rstrip().split())
def S(): return sys.stdin.readline().rstrip()
readline = sys.stdin.readline
sys.setrecursionlimit(10 ** 6)

A,B,C = MI()
a = gcd(A,gcd(B,C))
print(A//a+B//a+C//a-3)

まとめ

前の問題【021 – Come Back in One Piece(★5)】
次の問題【024 – Select +/- One(★2)】

コメント

タイトルとURLをコピーしました