022 - Cubic Cake(★2)
キーワード
解説
の正方形が作れるのは, がそれぞれ で割り切れるとき.
最大の を取れば良いので, GCD を求めれば良い.
GCD は次のように求められる.
func gcd(x, y int64) int64 {
if x < y {
x, y = y, x
}
for y > 0 {
x, y = y, x%y
}
return x
}
あるいは, 再帰を用いて次のように書くこともできる.
func gcd(x, y int64) int64 {
if y == 0 {
return x
}
return gcd(y, x%y)
}
提出コード
func gcd(x, y int64) int64 {
if x < y {
x, y = y, x
}
for y > 0 {
x, y = y, x%y
}
return x
}
func main() {
abc := readLongs()
a, b, c := abc[0], abc[1], abc[2]
g := gcd(a, gcd(b, c))
writeLine(a/g + b/g + c/g - 3)
}