結果
| 問題 |
No.375 立方体のN等分 (1)
|
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 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)
lam6er