結果

問題 No.313 π
コンテスト
ユーザー i_taku
提出日時 2026-03-03 11:03:57
言語 PyPy3
(7.3.17)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
RE  
実行時間 -
コード長 1,040 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 179 ms
コンパイル使用メモリ 85,608 KB
実行使用メモリ 170,344 KB
最終ジャッジ日時 2026-03-03 11:05:32
合計ジャッジ時間 68,626 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample RE * 2
other RE * 32
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

from decimal import Decimal, getcontext

def pi_chudnovsky(digits):
    getcontext().prec = digits + 10
    num_iterations = digits // 14 + 1

    def binary_splitting(a, b):
        if b - a == 1:
            if a == 0:
                P = Q = 1
            else:
                P = (6 * a - 5) * (2 * a - 1) * (6 * a - 1)
                Q = a**3 * 640320**3 // 24
            T = P * (13591409 + 545140134 * a)
            if a % 2 == 1:
                T = -T
            return P, Q, T
        else:
            mid = (a + b) // 2
            P1, Q1, T1 = binary_splitting(a, mid)
            P2, Q2, T2 = binary_splitting(mid, b)
            P = P1 * P2
            Q = Q1 * Q2
            T = Q2 * T1 + P1 * T2
            return P, Q, T

    _, Q, T = binary_splitting(0, num_iterations)
    C = 426880 * Decimal(10005).sqrt()
    pi = (C * Q) / T
    
    return str(pi)[:digits + 2]

S = input()
pi_str = str(pi_chudnovsky(200_000))
for i in range(len(S)):
    if S[i] != pi_str[i]:
        print(S[i], pi_str[i])
        exit()
0