熱門文章

2025年9月26日 星期五

ZeroJudge 解題筆記:e494. 無窮級數之和(二)

作者:王一哲
日期: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}")


沒有留言:

張貼留言