日期:2026年3月28日
ZeroJudge 題目連結:c203. 13185 - DPA Numbers I
解題想法
這題的測資很小,硬算就好。寫一個自訂函式 test 找 n 的所有因數和 $isum$,$isum$ 至少為 1,接下來從 $i = 2$ 開始往上測試到 $i = \sqrt{n}$ 為止,如果 $i$ 可以整除 $n$,則 $isum$ 加上 $i + (n/i)$;如果 $i^2 = n$,則 $isum$ 要再減去 $i$。最後比較 $isum$ 與 $n$ 的關係,輸出對應的答案。
Python 程式碼
使用時間約為 7 ms,記憶體約為 2.9 MB,通過測試。
def test(n):
isum = 1
for i in range(2, int(n**0.5) + 1):
if n%i == 0:
isum += i + n//i
if i*i == n:
isum -= i
if isum == n: return "perfect"
if isum < n: return "deficient"
return "abundant"
def solve():
import sys
result = []
data = sys.stdin.read().split()
ptr = 1
while ptr < len(data):
result.append(f"{test(int(data[ptr]))}\n")
ptr += 1
sys.stdout.write("".join(result))
if __name__ == "__main__":
solve()