日期:2026年2月1日
ZeroJudge 題目連結:c032. 00382 - Perfection
解題想法
注意,實際上有多行測資。我是用試除法找 $n$ 的因數,將所有的因數儲存在集合之中。最後再比較所有的因數加總 $isum$ 與 $n$ 的大小,輸出對應的答案。
Python 程式碼
使用時間約為 17 ms,記憶體約為 3.3 MB,通過測試。
import sys
def test(n):
if n == 1: return "DEFICIENT"
factors = {1}
for i in range(2, int(n**0.5)+1):
if n%i == 0:
factors.add(i)
factors.add(n//i)
isum = sum(factors)
if isum == n:
return "PERFECT"
elif isum < n:
return "DEFICIENT"
else:
return "ABUNDANT"
print("PERFECTION OUTPUT")
for line in sys.stdin:
for n in map(int, line.split()):
if n == 0: continue
print(f"{n:5d} {test(n):s}")
print("END OF OUTPUT")