結果
問題 |
No.375 立方体のN等分 (1)
|
ユーザー |
![]() |
提出日時 | 2025-03-20 20:18:58 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 298 ms / 5,000 ms |
コード長 | 1,217 bytes |
コンパイル時間 | 314 ms |
コンパイル使用メモリ | 82,168 KB |
実行使用メモリ | 76,992 KB |
最終ジャッジ日時 | 2025-03-20 20:20:05 |
合計ジャッジ時間 | 3,539 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 32 |
ソースコード
import math def find_min_max_planes(N): # Compute Tmax Tmax = N - 1 # Function to generate all factors of a number M >=1 def get_factors(M): factors = set() for i in range(1, int(math.isqrt(M)) + 1): if M % i == 0: factors.add(i) factors.add(M // i) return sorted(factors) min_sum = float('inf') max_cube_root = int(round(N ** (1/3))) + 1 for p in range(1, max_cube_root + 1): if N % p != 0: continue M = N // p factors_M = get_factors(M) for q in factors_M: if q < p: continue if q > math.isqrt(M): continue if M % q != 0: continue r = M // q if r < q: continue current_sum = p + q + r if current_sum < min_sum: min_sum = current_sum if min_sum == float('inf'): # In case N is prime, min_sum is 1+1+N, Tmin = (1+1+N) -3 = N-1 Tmin = Tmax else: Tmin = min_sum - 3 return Tmin, Tmax # Read input N = int(input()) Tmin, Tmax = find_min_max_planes(N) print(Tmin, Tmax)