yukicoder No375 立方体のN等分 (1)
考え
同じ方向からN - 1枚の平面で切断するのが最大なので、TMaxはN - 1
下図のA方向からの平面の切断数をa、B方向はb、C方向はc、とすると
TMinはa + b + cの最小の値となる。
なので、aの値を全探索をして、残りのb、cの値を決めて最小値を求める。
N = (a + 1) * (b + 1) * (c + 1)となるように全探索を行う。
ソースコード
N = int(input()) maxAns = N - 1 minAns = 10**11 yaku = [] i = 1 while i * i <= N: if N % i == 0: yaku.append(i) i += 1 for a in yaku: for b in yaku: if N % (a * b) == 0: c = N // (a * b) minAns = min(minAns,a - 1 + b - 1 + c - 1) print(minAns,maxAns)