日期:2025年9月26日
ZeroJudge 題目連結:e494. 無窮級數之和(二)
解題想法
這題考數學及大數運算,所以我只有寫 Python 版本。公式解 $$ \frac{1}{2} + \frac{1}{3} + \frac{1}{5} + \frac{1}{7} + \dots + \frac{1}{p} = \ln(\ln p) + M = \ln(\ln p) + 0.2614972128476427837554268386 $$ 由於輸出的小數位數很多,甚至要用到 decimal 函式庫的浮點數物件 Decimal 才行。
Python 程式碼
使用時間約為 50 ms,記憶體約為 4 MB,通過測試。
import sys, decimal
def solve(n):
decimal.getcontext().prec = 1000 # 設定小數位數
p = decimal.Decimal(n) # 用 Decimal 格式的浮點數
if p == decimal.Decimal(2): # 特例,n 等於 2,回傳 0.5
return decimal.Decimal('0.5')
# 公式解,ln(ln(n)) + M
ln_ln_p = p.ln().ln()
M = decimal.Decimal('0.2614972128476427837554268386')
return round(ln_ln_p + M, 3)
for line in sys.stdin:
print(f"{solve(decimal.Decimal(line)):.3f}")